คลาส java.util.EnumMap เป็น Map Implementation แบบเฉพาะเจาะจง สำหรับใช้กับ Enum Keys จุดสำคัญของ EnumMap:
- Key ทั้งหมดใน Enum Map ต้องมาจาก Enum Type เดียวที่ระบุเมื่อสร้าง Map
- Enum Maps จัดเก็บเรียงตาม Natural Order ของ Keys
- EnumMap ไม่ Thread-Safe หากหลาย Thread เข้าถึงพร้อมกันและมีการ Modify ควร Synchronize ภายนอก
Constructors ของ EnumMap
| ลำดับ | Constructor & Description |
|---|---|
| 1 | EnumMap(Class<K> keyType) สร้าง Enum Map ว่าง พร้อม Key Type ที่ระบุ |
| 2 | EnumMap(EnumMap<K,? extends V> m) สร้าง Enum Map เดียวกับ Key Type ของ Map ที่ระบุ คัดลอก Mappings ทั้งหมด |
| 3 | EnumMap(Map<K,? extends V> m) สร้าง Enum Map เริ่มต้นจาก Map ที่ระบุ |
ตัวอย่างที่ 1: การใช้งาน EnumMap พื้นฐาน
import java.util.EnumMap;
public class Demo {
// สร้าง Enum
public enum Numbers {
ONE, TWO, THREE, FOUR, FIVE
}
public static void main(String[] args) {
EnumMap<Numbers, String> map1 = new EnumMap<Numbers, String>(Numbers.class);
EnumMap<Numbers, String> map2 = new EnumMap<Numbers, String>(Numbers.class);
// ใส่ค่าใน map1
map1.put(Numbers.ONE, "1");
map1.put(Numbers.TWO, "2");
map1.put(Numbers.THREE, "3");
map1.put(Numbers.FOUR, "4");
// แสดง map1
System.out.println("map1:" + map1);
// Clone map1 ไป map2
map2 = map1.clone();
System.out.println("map2:" + map2);
}
}
ผลลัพธ์
map1:{ONE=1, TWO=2, THREE=3, FOUR=4}
map2:{ONE=1, TWO=2, THREE=3, FOUR=4}
ตัวอย่างที่ 2: นับจำนวน Key-Value Mappings
import java.util.*;
public class EnumMapDemo {
public enum Numbers {
ONE, TWO, THREE, FOUR, FIVE
}
public static void main(String[] args) {
EnumMap<Numbers, String> map = new EnumMap<Numbers, String>(Numbers.class);
map.put(Numbers.ONE, "1");
map.put(Numbers.TWO, "2");
map.put(Numbers.THREE, "3");
map.put(Numbers.FOUR, "4");
System.out.println("Map: " + map);
System.out.println("Number of mappings: " + map.size());
map.put(Numbers.FIVE, "5");
System.out.println("Number of mappings: " + map.size());
}
}
ผลลัพธ์
Map: {ONE=1, TWO=2, THREE=3, FOUR=4}
Number of mappings: 4
Number of mappings: 5
ข้อดีของ EnumMap: ประสิทธิภาพดีกว่า HashMap สำหรับ Enum Keys เนื่องจากใช้ Array Index โดยตรง ตัวแปร Enum เป็น Key ได้โดยไม่ต้อง Hash