作者:手机用户2502863643 | 来源:互联网 | 2022-11-28 20:43
正如我们已经拥有的HashMap
,我们为什么要使用EnumMap
?
1> Thilo..:
该的Javadoc使一个相当不错的参数:
枚举映射在内部表示为数组.这种表现非常紧凑和高效.
实施说明:所有基本操作都在恒定时间内执行.它们很可能(虽然不能保证)比它们的HashMap对应物更快.
2> 小智..:
EnumMap的主要原因是它专门针对枚举进行了优化.下面提到了进一步的好处.
从https://javarevisited.blogspot.com/2012/09/difference-between-enummap-and-hashmap-in-java-vs.html#axzz5XTB1xBUe获取帮助
1)EnumMap和HashMap之间的首要区别是EnumMap针对枚举键进行了优化,而HashMap是一个类似于Hashtable的通用Map实现.你不能使用Enum以外的任何类型作为EnumMap中的键,但你可以使用Enum和任何其他Object作为HashMap中的键.
2)EnumMap和HashMap的另一个区别是性能.正如前面所讨论的,由于对枚举键进行了专门的优化,当使用枚举作为关键对象时,EnumMap可能比HashMap表现更好.
3)另外一件可以被认为是HashMap和EnumMap之间的区别的是碰撞的概率.由于Enum在内部维护为数组,并且使用ordinal()以它们的自然顺序存储,如下面的代码所示,该代码取自EnumMap的put()方法
int index = ((Enum)key).ordinal();
Object oldValue = vals[index];
vals[index] = maskNull(value);