Java 中 EnumMap 和 HashMap 的区别

javaobject oriented programmingprogramming更新于 2025/3/3 18:20:17

EnumMap 是在 JDK5 中引入的。它旨在使用 Enum 作为 Map 中的键。它也是 Map 接口的实现。EnumMap 中的所有键都应该是相同的枚举类型。在 EnumMap 中,键不能为空,否则会抛出 NullPointerException。

根据 java 文档 −

 EnumMap 在内部用作数组,这种表示形式非常紧凑且高效。

HashMap 也是 Map 接口的实现。它用于以 Key 和 Value 形式存储数据。它可以包含一个 null 键和多个 null 值。在 HashMap 中,键不能是原始类型。Java HashMap 实现为基本操作(获取和放入)提供了恒定时间性能,假设哈希函数将元素正确分散到存储桶中。

Sr.否。
Key
EnumMap
HashMap

1

Basic 

用于枚举类型键的专用 Map 实现

HashMap也是Map接口的实现。

2

Null Key

不能有null key。

可以有一个null key和多个null value

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

相关文章


有用资源