基本概念
概念
key的类型是enum类
- 根据enum直接定位到内部数组的索引,不需要计算hashCode
没有额外空间浪费 - 用Map接口引用,对于client来说,使用hashMap和EnumMap无区别
使用
如果Map的key是enum类型,推荐使用EnumMap,既保证速度,也不浪费空间。
- 保证速度:不进行hashCode的计算,直接通过枚举里的ordinal作为index,和key、value数组映射
- 不浪费空间:数据的大小和索引位置是固定的,不用对key进行散列和拉链,节约空间;此外数组不用保存<key,value>,只需要两个数组,一个对应key,一个对应value即可
源码解析
定义
- 同HashMap一样,继承了AbstractMap抽象类,实现了Serializable和Cloneable接口;
- 特别的是,定义了key的类型一定是enum类的
public class EnumMap<K extends Enum<K>, V> extends AbstractMap<K, V>
implements java