Computer >> Máy Tính >  >> Lập trình >> Java

Sự khác biệt giữa EnumMap và HashMap trong Java

EnumMap được giới thiệu trong JDK5. Nó được thiết kế để sử dụng Enum làm chìa khóa trong Bản đồ. Nó cũng là việc thực hiện giao diện Bản đồ. Tất cả khóa trong EnumMap phải cùng loại enum. Trong EnumMap, khóa không được rỗng và bất kỳ khóa nào sẽ ném NullPointerException.

Theo tài liệu java -

EnumMap bên trong sử dụng dưới dạng mảng, cách biểu diễn này cực kỳ nhỏ gọn và hiệu quả.

HashMap cũng là phần thực hiện của giao diện Bản đồ. Nó được sử dụng để lưu trữ dữ liệu ở dạng Khóa và Giá trị. Nó có thể chứa một khóa null và nhiều giá trị null. Trong HashMap, khóa không được là loại nguyên thủy. Việc triển khai Java HashMap cung cấp hiệu suất thời gian không đổi cho các hoạt động cơ bản (lấy và đặt), giả sử hàm băm phân tán các phần tử đúng cách giữa các nhóm.

Phím
Sr. Không.

EnumMap
HashMap

1

Cơ bản

Triển khai Bản đồ chuyên dụng để sử dụng với các khóa kiểu enum

HashMap cũng là việc triển khai giao diện Bản đồ.

2

Khóa rỗng

Nó không được có khóa rỗng.

Nó có thể có một khóa null và nhiều giá trị null

3

Hiệu suất

Tất cả các hoạt động thực thi trong thời gian không đổi, do đó nó nhanh hơn HashMap

Nó chậm hơn HashMap

4.

Triển khai nội bộ

Nó sử dụng Array trong nội bộ

Nó sử dụng Hashtable nội bộ

5.

Đặt hàng

EnumMap lưu trữ các khóa theo thứ tự tự nhiên của các khóa của chúng

HashMap không được đặt hàng

Ví dụ về 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());
      }
   }
}

Ví dụ về 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());
      }
   }
}