ハミ:
私は2つのハッシュマップを作成していると私は、forループと同じ内部にそれらの両方を反復します。
HashMap<String,Double> hashmapA = new HashMap<>();
HashMap<String,Double> hashmapB = new HashMap<>();
だから、私は内の要素反復場合はhashmapA
、次のように:
for(String map1:hashmapA.keyset()){
...
}
どのように私はの値を繰り返すことができhashmapB
、同じループ内で?実は、私は内側のループを使用する必要はありません。
Dnlst:
あなただけのすべてのキーを反復処理したい場合は:
ただ、新しい作成するHashSet
最初の鍵のうちのMap
第二のキーを追加します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();
...
}
あなただけのマップの交差点をしたい場合は、使用することができます。
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);
...
}
または(Streamsを使用しました):
for(String key: hashmapA.entrySet().stream().filter(k->hashmapB.containsKey(k))){
Double aValue=hashmapA.get(key);
Double bValue=hashmapB.get(key);
...
}
@としてbsaverinoコメントで次のように述べました。
最新の発言@Hamiはその後、ちょうどのキーを反復処理について
hashmapA
及び使用はhashmapB.containsKey(...)
十分だったかもしれません。
以下はまた、あなたのケースで動作します:
for(String key:hashmapA.keySet()){
if(hashmapB.containsKey(key){
Double aVal=hashmapA.get(key);
Double bVal=hashmapB.get(key);
}
}