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

ความแตกต่างระหว่าง EnumMap และ HashMap ใน Java


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