Java集合中的entrySet和keySet的区别

3

在Java集合中,entrySet()和keyset()哪个更适合性能?

(I) 在for each循环中使用entrySet()

for (Map.Entry<String,Integer> entry : testMap.entrySet()) {
  entry.getKey();
  entry.getValue();`enter code here`
}

(II) 在for each循环中使用keySet()

该技术内容与IT相关。
for (String key : testMap.keySet()) {
  testMap.get(key);`enter code here`
}

3
使用entrySet而不是进行额外的get调用,虽然影响不大,但如果您需要迭代键和值,这会更好。 - Eran
1个回答

7

这完全取决于您的要求。这三个集合只是表示不同的使用情况:如果您的“迭代”代码

这就是全部。也就是说,当您只想打印地图的时,没有必要处理键,然后例如获取值。

如果您需要键和值,则建议使用entrySet()以获得清晰度。在遇到真正的问题之前不必担心性能。然后开始基准测试您的代码以了解发生了什么。


我正在将20万个键值对存储在映射中,并将遍历映射。我还将从映射中获取所有20万个条目的键和值。请告诉我哪种方法更好? - Savan Javia
看看我的更新。顺便说一句,要明白,在亚洲之外,很少有人知道“lac”是什么。 - GhostCat
2
值得一提的是,如果HashMap包含大量冲突,那么keySet()迭代可能比entrySet()慢得多。 - ZhekaKozlov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接