Java集<;字符串>;在哈希映射中
我有一个目标:Java集<;字符串>;在哈希映射中,java,hashmap,set,Java,Hashmap,Set,我有一个目标: Map<Long, Set<String>> resourcesByID = new HashMap<Long, Set<String>>(); Map resourcesbyd=newhashmap(); 还有一个: Set<String> resources; 设置资源; 当我想在HashMap中放入更多的集合时,它将覆盖我之前放入的集合元素。为什么?我该如何解决这个问题 如果键匹配,它将覆盖以前的值,否则不
Map<Long, Set<String>> resourcesByID = new HashMap<Long, Set<String>>();
Map resourcesbyd=newhashmap();
还有一个:
Set<String> resources;
设置资源;
当我想在HashMap中放入更多的集合时,它将覆盖我之前放入的集合元素。为什么?我该如何解决这个问题 如果
键
匹配,它将覆盖以前的值,否则不会覆盖
(或)
正如Thomas所评论的,如果您的集合发生了变异,并且您正在更新相同的集合,那么它可能会覆盖。如果
键匹配,它会覆盖以前的值,否则它不会覆盖
(或)
正如Thomas所评论的,如果您的集合发生了变异,并且您正在更新相同的集合,那么它可能会覆盖。
Long id = 1234L;
Set<String> resources = ...;
如果要将String
s添加到现有映射
resourcesById.get(id).addAll(resources);
如果你没有正确的初始化,生活会变得更简单
if (!resourcesById.containsKey(id)) {
resourcesById.put(id, new HashSet<String>());
}
resourcesById.get(id).addAll(resources);
if(!resourcesById.containsKey(id)){
resourcesById.put(id,newhashset());
}
resourcesbyd.get(id).addAll(resources);
假设
Long id = 1234L;
Set<String> resources = ...;
如果要将String
s添加到现有映射
resourcesById.get(id).addAll(resources);
如果你没有正确的初始化,生活会变得更简单
if (!resourcesById.containsKey(id)) {
resourcesById.put(id, new HashSet<String>());
}
resourcesById.get(id).addAll(resources);
if(!resourcesById.containsKey(id)){
resourcesById.put(id,newhashset());
}
resourcesbyd.get(id).addAll(resources);
- 第一个原因是您可能对每个集合使用相同的键
- 第二个原因是,如果每个键(长键)的键不同,则可能使用相同的集
使用参考资料参考,您必须创建单独的
为每个键设置的实例
- 第一个原因是您可能对每个集合使用相同的键
- 第二个原因是,如果每个键(长键)的键不同,则可能使用相同的集
使用参考资料参考,您必须创建单独的
为每个键设置的实例
您能举例说明在什么情况下会发生这种情况吗?如何将集合放入HashMap?您应该在使用
resourcesById
的地方发布代码。很可能您只是在HashMap中添加了一个新的集合。您应该做的是检查HashMap是否包含要用于插入的Long。如果是,则必须从贴图中获取集合,并将插入集合中的所有元素添加到其中。如果没有,只需插入插入集。很可能您没有为每个新键创建新的集,相反,您不断地将新元素推入相同的资源
对象,然后将所述资源
对象的不同键的多个引用放入hashmap。您能给出一个例子吗?如何将集合放入HashMap?您应该在使用resourcesById
的地方发布代码。很可能您只是在HashMap中添加了一个新的集合。您应该做的是检查HashMap是否包含要用于插入的Long。如果是,则必须从贴图中获取集合,并将插入集合中的所有元素添加到其中。如果没有,只需插入插入集。很可能您没有为每个新键创建一个新的集
,而是不断地将新元素推送到同一资源
对象中,然后将所述资源
对象的多个引用(针对不同键)放入hashmap。或者更糟,如果您从外部对已插入的集合进行变异。@user1732178:键不同,但您正在更新同一集合?这是我的问题:当我将不同的元素放入HashMap时,我使用了相同的集合引用,因此它会更改HashMap中的所有集合。但现在它起作用了。谢谢。那个变异的评论有帮助;)@用户1732178:不客气。如果答案有帮助,请不要忘记接受它。或者更糟糕的是,如果您从外部对已插入的集合进行变异。@user1732178:键不同,但您正在更新同一集合?这是我的问题:当我将不同的元素放入HashMap时,我使用了相同的集合引用,因此它会更改HashMap中的所有集合。但现在它起作用了。谢谢。那个变异的评论有帮助;)@用户1732178:不客气。如果答案有用,别忘了接受它。