为什么使用EnumMap而不是HashMap
正如我们已经拥有的那样,我们为什么要使用?HashMap
EnumMap
正如我们已经拥有的那样,我们为什么要使用?HashMap
EnumMap
EnumMap的主要原因是它专门针对枚举进行了优化。下面将提到其他好处。
1)EnumMap和HashMap之间的首要区别在于EnumMap针对枚举键进行了优化,而HashMap是类似于Hashtable的通用Map实现。在EnumMap中,你不能使用Enum以外的任何类型作为键,但你可以在HashMap中使用Enum和任何其他对象作为键。
2)EnumMap和HashMap之间的另一个区别是性能。如上一点所述,由于对Enum键进行了专门的优化,当使用enum作为键对象时,EnumMap的性能可能比HashMap更好。
3)另一件可以被认为是HashMap和EnumMap之间区别的事情是碰撞的概率。由于Enum在内部作为数组进行维护,并且它们使用ordinal()以自然顺序存储,如下面的代码所示,该代码取自EnumMap的put()方法
int index = ((Enum)key).ordinal();
Object oldValue = vals[index];
vals[index] = maskNull(value);