HashMap或TreeMap或LinkedHashMap哪一个是迭代最快的?

2022-09-02 09:42:02

我有一个在应用程序启动期间填满的。在应用程序执行期间,它不会在以后更改。稍后,此映射仅用于迭代其中的所有元素。我应该选择哪种具体实现? 或 ?
更新
广告订单无关紧要。唯一重要的是所有元素的快速迭代(比如6000个元素)。MapMapHashMapTreeMapLinkedHashMap


答案 1

HashMap通常速度最快,因为它具有最佳的缓存行为(直接迭代后备数组,而迭代链接数据结构)。HashMapTreeMapLinkedHashMap

您可能希望使用不可变地图不可变形地图,如果地图初始化后不会更改


答案 2

这里的其他答案都没有考虑CPU缓存的影响,当涉及迭代时,CPU缓存可能是巨大的

改善这一点的一种方法是仅使用一个交错键和值数组(偶数索引处的键,奇数索引处的值)。这将把这些数据项紧密地组合在一起,并最大限度地利用缓存,至少对于引用而言。

但是,如果您可以避免创建保存数据的对象并仅使用基元值数组,那么真正的,尖叫的改进将实现。当然,这高度依赖于您的用例。