为什么使用EnumMap而不是HashMap



既然我们已经有了HashMap,为什么要使用EnumMap

Javadoc提出了一个很好的论点:

枚举映射在内部表示为数组。这种表示非常紧凑和高效。

实现说明:所有基本操作都在恒定时间内执行。它们很可能(尽管不能保证(比HashMap的同类更快。

EnumMap的主要原因是它专门针对枚举进行了优化。进一步的好处如下所述。

从获得帮助https://javarevisited.blogspot.com/2012/09/difference-between-enummap-and-hashmap-in-java-vs.html#axzz5XTB1xBUe

1( EnumMap和HashMap之间的第一个也是最重要的区别是,EnumMap针对枚举键进行了优化,而HashMap是类似于Hashtable的通用Map实现。不能在EnumMap中使用Enum以外的任何类型作为键,但可以在HashMap中同时使用Enum和任何其他Object作为键。

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);

相关内容

  • 没有找到相关文章

最新更新