Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

EnumMap Class ใน Java

คลาส 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
1EnumMap(Class<K> keyType)
สร้าง Enum Map ว่าง พร้อม Key Type ที่ระบุ
2EnumMap(EnumMap<K,? extends V> m)
สร้าง Enum Map เดียวกับ Key Type ของ Map ที่ระบุ คัดลอก Mappings ทั้งหมด
3EnumMap(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