Java中的EnumMap和HashMap之间的区别
EnumMap是在JDK5中引入的。它旨在使用Enum作为Map中的键。它也是Map接口的实现。EnumMap中的所有键都应具有相同的枚举类型。在EnumMap中,键不能为null,任何键都将引发NullPointerException。
根据java文档-
EnumMap在内部用作数组,此表示非常紧凑且高效。
HashMap也是Map接口的实现。它用于以“键和值”形式存储数据。它可以包含一个null键和多个null值。在HashMap中,键不能是原始类型。JavaHashMap实现为基本操作(获取和放置)提供了恒定时间的性能,假设哈希函数将元素正确分散在存储桶中。
1
基本
与枚举类型键一起使用的特殊Map实现
HashMap也是Map接口的实现。
2
null键
它不能有空键。
它可以有一个空键和多个空值
3
性能
所有操作均以恒定时间执行,因此它比HashMap更快
它比HashMap慢
4
内部实现
它在内部使用数组
它在内部使用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) { //创建枚举映射 EnumMap map = new EnumMap(LaptopEnum.class); map.put(LaptopEnum.HCL, "100"); map.put(LaptopEnum.DELL, "200"); map.put(LaptopEnum.IBM, "300"); //打印映射 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) { //创建哈希映射 Map map = new HashMap(); map.put("HCL", "100"); map.put("DELL", "200"); map.put("IBM", "300"); //打印映射 for (Map.Entry m : map.entrySet()) { System.out.println(m.getKey() + " " + m.getValue()); } } }