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.