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());
}
}
}
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP