แนะนำ 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()); } } }