1. ホーム
  2. java

[解決済み] どのようにJavaのhashMapにputAllを1つの内容を別のものに、しかし、既存のキーと値を置き換えないでください?

2023-04-26 08:59:22

質問

私は、あるA HashMapから別のB HashMapにすべてのキーと値をコピーする必要がありますが、既存のキーと値を置き換えることはできません。

それを行うための最良の方法は何ですか?

キーセットを反復して、それが存在するかどうかをチェックする代わりに、私は次のように考えていました。

Map temp = new HashMap(); // generic later
temp.putAll(Amap);
A.clear();
A.putAll(Bmap);
A.putAll(temp);

どのように解決するのですか?

を作りたいようですが、一時的な Map を作る気があるようなので、私ならこうします。

Map tmp = new HashMap(patch);
tmp.keySet().removeAll(target.keySet());
target.putAll(tmp);

ここで patch に追加しているマップです。 target マップに追加するマップです。

おかげさまで Louis Wassermanさん。 のおかげで、Java 8の新しいメソッドを利用したバージョンがあります。

patch.forEach(target::putIfAbsent);