キーがStringで、値がArrayListの2つのHashMapがあります。これらの2つのマップを次のようにマージする必要があります。 -2つのマップをマージする<String,List>
- キーが存在しない場合、キーは指定された値でマップする必要があります。
- keyがすでに存在する場合は、既存の値を新しい値、つまりexistingList.addAll(newList)とマージする必要があります。
初期のコードは多少のように見える - 私はここに重複した要素を気にしないでください
if (map1.containsKey("key")){
List l = map1.get ("key");
l.addAll(map2.get("key"));
}
else{
map1.put(map2);
}
場合はマップチェックのすべてのキーのために
。これを行うきれいな方法がありますか?私はJava 8で導入されたマージメソッドについて読んだことがあります。しかし値がリストタイプであるので、私はより効率的でクリーンな方法を探しています。
私はあなたがそれを記述したのとまったく同じように書くことを提案します。その後、いつでもそれをリファクタリングすることができます。 – f1sh
最初の試行のコードを追加できますか?これに基づいて、清潔さと効率について話すほうがずっと簡単になるでしょう。 – reto
「*私はここで重複する要素は気にしません」とあなたが何を意味するのか分かりません。それに加えて、 'merge'が行く方法と思われます。' map2.forEach((k、v) - > map1.merge(k、v、(l1、l2) - > {l1.addAll(l2); return l1;})); ' – Holger