gpt4 book ai didi

keySet 上的 Java 迭代

转载 作者:搜寻专家 更新时间:2023-10-30 20:58:57 26 4
gpt4 key购买 nike

我有以下 Java 代码:

public void myMethod (final Map pFeatureGroupsFromPackage) {

final Set<String> keys = pFeatureGroupsFromPackage.keySet();

for (final String key : keys) {
tmpList = (List<FeatureKey>) pFeatureGroupsFromPackage.get(key);
// do whatever
}
}

我收到来自“findBugs”的警告,内容如下:

方法 myMethod 低效地使用了 keySet 迭代器而不是 entrySet 迭代器。警告是在 tmpList 分配时完成的。

我不明白为什么这是低效的。事实上,keys 列表只计算一次。任何意见?谢谢。

最佳答案

不是遍历 keySet 并调用 get 来为每个键获取相应的值,而是遍历 entrySet:

final Set<Map.Entry<String, List<FeatureKey>>> entries = pFeatureGroupsFromPackage.entrySet();

for (Map.Entry<String, List<FeatureKey>> entry : entries) {
String key = entry.getKey();
List<FeatureKey> tmpList = entry.getValue();

// do whatever
}

这样您就不必在 map 中查找每个键;直接一次性获取key和value。

此外,使用类型参数声明您的 Map:

public void myMethod (final Map<String, List<FeatureKey>> pFeatureGroupsFromPackage) {
// ...
}

关于keySet 上的 Java 迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5430883/

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