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());
}
}
}
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/
打印
下一节:Java 中 Collection.stream().forEach() 和 Collection.forEach() 的区别 ❯❮ 上一节:在 Java 中何时使用抽象类,何时使用接口?

