私はこのオブジェクトを持っています:
Map<Long, Set<String>> resourcesByID = new HashMap<Long, Set<String>>();
そして別の:
Set<String> resources;
より多くのセットをHashMapに配置したい場合、以前に配置したセットの要素をオーバーライドします。なんで?そして、どうすればこの問題を解決できますか?
仮定
Long id = 1234L;
Set<String> resources = ...;
Long
aからSet
thenへの別のマッピングを追加する場合
resourcesById.put(id, resources);
String
既存のマッピングにsを追加する場合
resourcesById.get(id).addAll(resources);
また、初期化を正しく行っていない場合に、作業を簡単にするために...
if (!resourcesById.containsKey(id)) {
resourcesById.put(id, new HashSet<String>());
}
resourcesById.get(id).addAll(resources);
一致する場合key
は前の値をオーバーライドし、一致しない場合はオーバーライドしません。
(また)
トーマスがコメントしたように、あなたのセットが変異していて、同じセットを更新している場合、そうです、それはオーバーライドするかもしれません。