gpt4 book ai didi

java - 考虑到 Hashmap,如何在 for 循环中使用额外的检查?

转载 作者:行者123 更新时间:2023-12-02 01:01:51 27 4
gpt4 key购买 nike

我创建了两个 HashMap ,我想在同一个 for 循环中迭代它们。

HashMap<String,Double> hashmapA = new HashMap<>();
HashMap<String,Double> hashmapB = new HashMap<>();

因此,如果我按如下方式迭代 hashmapA 中的元素:

for(String map1:hashmapA.keyset()){
...
}

如何在同一循环内迭代 hashmapB 的值?实际上,我不想使用内循环。

最佳答案

如果您只想迭代所有键:

只需根据第一个 Map 的键创建一个新的 HashSet 并添加第二个 Map 的键:

Collection<Map.Entry<String,Double>> entries=new HashSet<>(hashmapA.entrySet());
keys.addAll(hashmapB.entrySet());
for(Map.Entry<String,Double> entry:entries){
String key=entry.getKey();
Double value=entry.getValue();
...
}

这也可以使用 Java 8 Streams 来完成:

for(Map.Entry<String,Double> entry: Stream.concat(hashmapA.entrySet().stream(),hashmapB.entrySet().stream()){
String key=entry.getKey();
Double value=entry.getValue();
...
}

如果你只想要 map 的交集,你可以使用:

Collection<String> keys=new HashSet<>(hashmapA.keySet());
keys.retainAll(hashmapB.keySet());
for(String key:keys){
Double aValue=hashmapA.get(key);
Double bValue=hashmapB.get(key);
...
}

或者(使用流):

for(String key: hashmapA.entrySet().stream().filter(k->hashmapB.containsKey(k))){
Double aValue=hashmapA.get(key);
Double bValue=hashmapB.get(key);
...
}

如@ bsaverino评论中指出:

Regarding your latest remark @Hami then just iterating over the keys of hashmapA and using hashmapB.containsKey(...) could have been enough.

以下内容也适用于您的情况:

for(String key:hashmapA.keySet()){
if(hashmapB.containsKey(key){
Double aVal=hashmapA.get(key);
Double bVal=hashmapB.get(key);
}
}

关于java - 考虑到 Hashmap,如何在 for 循环中使用额外的检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60554211/

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