gpt4 book ai didi

java - Map 的 keySet() 和 entrySet() 的性能注意事项

转载 作者:IT老高 更新时间:2023-10-28 11:51:55 26 4
gpt4 key购买 nike

全部,

谁能告诉我两者之间的性能问题到底是什么?网站:CodeRanch简要概述了使用 keySet() 和 get() 时所需的内部调用。但是,如果有人可以在使用 keySet() 和 get() 方法时提供有关流程的确切详细信息,那就太好了。这将帮助我更好地理解性能问题。

最佳答案

使用 entrySet 优于 keySet 的最常见情况是,当您遍历 Map 中的所有键/值对时。

这样更有效率:

for (Map.Entry entry : map.entrySet()) {
Object key = entry.getKey();
Object value = entry.getValue();
}

比:

for (Object key : map.keySet()) {
Object value = map.get(key);
}

因为在第二种情况下,对于 keySet 中的每个键,都会调用 map.get() 方法,这 - 在 HashMap 的情况下 - 需要 hashCode()评估键对象的 equals() 方法以找到关联的值*。在第一种情况下,消除了额外的工作。

编辑:如果您考虑 TreeMap,情况会更糟,其中 get 的调用是 O(log2(n)),即 will 的比较器可能需要运行 log2(n) 次(n = Map 的大小) 在找到相关值之前。

*某些 Map 实现具有内部优化,可在调用 hashCode()equals() 之前检查对象的身份。

关于java - Map 的 keySet() 和 entrySet() 的性能注意事项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3870064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com