EnumMap 比 HashMap 更快,因其用数组代替哈希表,索引由枚举 ordinal 值直接决定,免去哈希计算、key 比较及冲突处理,空间紧凑且遍历顺序固定。
EnumMap 是 Java 中专为枚举类型设计的高效映射实现,它用数组代替哈希表,避免了哈希计算和冲突处理,因此在键为枚举时性能明显优于 HashMap。
EnumMap 内部使用数组存储值,索引直接由枚举的 ordinal() 值决定。例如:
ordinal(从 0 开始);必须显式指定枚举类类型,不能靠类型推断:
EnumMap map = new EnumMap(Color.class);
new EnumMap() 编译不通过(类型擦除后无法获取枚举类);NullPointerException);适合键集明确、不变且数量有限的配置映射场景:
E extends Enum
的通配场景);基本上就这些。用对了枚举键,EnumMap 就是轻量、快速、安全的首选。