我得到了这个代码片段:
public static void main(String[] args){
Map<String, Set<String>> map = new HashMap<>();
Set<String> set = new HashSet<>();
set.add("user1");
set.add("user2");
map.put("key1", set);
Map<String, Set<String>> map2 = new HashMap<>();
map2.putAll(map);// I expect all elements are copied
map.get("key1").add("user3");// add 1 element in "map"
System.out.println(map2.get("key1").size()); // "map2" was affected
}
实际上map的set元素的修改影响了map2,所以程序打印的是“3”而不是“2”
这很奇怪,我希望,只要我在新的map2构造中使用“putAll”方法,我认为key和value都应该被深度克隆?
如何修复我的程序并确保 map2 完成与地图分开,同时从地图复制所有元素?
SMILET
FFIVE
相关分类