Java中EnumMap和HashMap的區別


EnumMap是在JDK5中引入的。它被設計為在Map中使用Enum作為鍵。它也是Map介面的實現。EnumMap中的所有鍵都應該屬於相同的列舉型別。在EnumMap中,鍵不能為null,否則會丟擲NullPointerException。

根據Java文件:

 EnumMap內部使用陣列,這種表示方式非常緊湊且高效。

HashMap也是Map介面的實現。它用於以鍵值對的形式儲存資料。它可以包含一個null鍵和多個null值。在HashMap中,鍵不能是基本型別。 Java HashMap實現為基本操作(get和put)提供了恆定時間效能,假設雜湊函式將元素正確地分散到桶中。

序號

EnumMap
HashMap

1

基本

一種專門用於列舉型別鍵的Map實現

HashMap也是Map介面的實現。

2

空鍵

它不能有空鍵。

 它可以有一個空鍵和多個空值

3

效能

所有操作都在恆定時間內執行,因此它比HashMap快

它比HashMap慢

4.

內部實現

它內部使用陣列

它內部使用雜湊表

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());
      }
   }
}

更新於: 2020年1月21日

744 次檢視

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.