แนะนำ EnumMap ใน JDK5 ออกแบบมาเพื่อใช้ Enum เป็นคีย์ในแผนที่ นอกจากนี้ยังเป็นการใช้งานอินเทอร์เฟซแผนที่ คีย์ทั้งหมดใน EnumMap ควรเป็นประเภท enum เดียวกัน ใน EnumMap คีย์ไม่สามารถเป็น null และมันจะส่ง NullPointerException
ตามเอกสารจาวา -
EnumMap ภายในใช้เป็นอาร์เรย์ การแสดงนี้มีขนาดกะทัดรัดและมีประสิทธิภาพมาก
HashMap ยังเป็นการนำส่วนต่อประสานแผนที่ไปใช้ ใช้สำหรับเก็บข้อมูลในรูปแบบคีย์และค่า โดยสามารถมีคีย์ null ได้หนึ่งค่าและค่า null หลายค่า ใน HashMap คีย์ไม่สามารถเป็นแบบพื้นฐานได้ การใช้งาน Java HashMap ให้ประสิทธิภาพการทำงานตามเวลาคงที่สำหรับการดำเนินการพื้นฐาน (รับและวาง) โดยสมมติว่าฟังก์ชันแฮชจะกระจายองค์ประกอบต่างๆ อย่างเหมาะสมระหว่างบัคเก็ต
| ซีเนียร์ เลขที่ | คีย์ | EnumMap | HashMap |
|---|---|---|---|
| 1 | พื้นฐาน | การใช้งาน Map เฉพาะสำหรับใช้กับคีย์ประเภท enum | HashMap ยังเป็นการนำส่วนต่อประสานแผนที่ไปใช้ด้วย |
| 2 | แป้นว่าง | ไม่สามารถมีคีย์ null ได้ | สามารถมีหนึ่ง null คีย์และค่า null หลายค่า |
| 3 | ประสิทธิภาพ | การดำเนินการทั้งหมดดำเนินการในเวลาคงที่ดังนั้นจึงเร็วกว่า HashMap | มันช้ากว่า HashMap |
| 4. | การใช้งานภายใน | มันใช้ Array ภายใน | มันใช้ Hashtable ภายใน |
| 5. | สั่งซื้อ | EnumMap จัดเก็บคีย์ตามลำดับธรรมชาติของคีย์ | HashMap ไม่ได้สั่ง |
ตัวอย่าง EnumMap
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;
public class EnumMapExample {
public enum LaptopEnum {
HCL, DELL, IBM
};
public static void main(String[] args) {
// create enum map
EnumMap map = new EnumMap(LaptopEnum.class);
map.put(LaptopEnum.HCL, "100");
map.put(LaptopEnum.DELL, "200");
map.put(LaptopEnum.IBM, "300");
// print the map
for (Map.Entry m : map.entrySet()) {
System.out.println(m.getKey() + " " + m.getValue());
}
}
} ตัวอย่าง HashMap
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class HashMapExample {
public static void main(String[] args) {
// create Hash map
Map map = new HashMap();
map.put("HCL", "100");
map.put("DELL", "200");
map.put("IBM", "300");
// print the map
for (Map.Entry m : map.entrySet()) {
System.out.println(m.getKey() + " " + m.getValue());
}
}
}