java集合中的entryset vs keyset

Sav*_*via 3 java collections

哪个更适合Java Collection中的Performance entryset()OR keyset()

(I)为每个循环使用enrtySet()

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

(II)对每个循环使用keySet()

for (String key : testMap.keySet()) {
  testMap.get(key);`enter code here`
}
Run Code Online (Sandbox Code Playgroud)

Gho*_*ica 5

这实际上取决于您的要求.这些集合只代表三种不同的用例:如果你的"迭代"代码

而已.含义:当您只想打印地图的时,没有必要处理迭代键,然后获取值.

如果你需要键+值,我建议清楚使用entrySet().在遇到实际问题之前,不要担心性能问题.然后开始代码进行基准测试,以了解会发生什么.

  • 值得一提的是,如果 HashMap 包含大量冲突,则“keySet()”迭代可能比“entrySet()”慢得多。 (2认同)