我有这个对象:
Map<Long, Set<String>> resourcesByID = new HashMap<Long, Set<String>>();
另一个:
Set<String> resources;
当我想将更多 Set 放入 HashMap 时,它将覆盖我之前放入的 Set 元素。为什么?我该如何解决这个问题?
假设
Long id = 1234L;
Set<String> resources = ...;
如果要添加从 aLong
到 a 的另一个映射,Set
则
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
匹配,它将覆盖以前的值,否则它不会覆盖。
(或者)
正如 Thomas 评论的那样,如果您的集合是 mutate 并且您正在更新同一个集合,是的,那么它可能会覆盖。