gpt4 book ai didi

java - addAll() 奇怪地更新了 HashMap

转载 作者:行者123 更新时间:2023-12-01 16:58:39 24 4
gpt4 key购买 nike

Map<String, HashSet<String>> mapp = new HashMap<String, HashSet<String>>();

HashSet<String> set1 = new HashSet<String>();
set1.add("a");

HashSet<String> set2 = new HashSet<String>();
set2.add("b");

mapp.put("A", set1);

set1.addAll(set2);

System.out.println(mapp.get("A"));

输出:

[b, a]

输出不应该只是[a]吗?是与 addAll() 相关的吗?如果在 mapp.put("A", set1) 之后调用 set1.addAll(set2),则 mapp 不应包含任何部分set2

最佳答案

set1放入mapp时,实际上传递了一个引用。这个引用指向一个对象。 set1 持有相同的引用。所以实际上 set1mapp.get("A") 的结果在内存中是同一个对象。这就解释了为什么 mapp.get("A")set1 具有相同的值。如果您希望 mapp.get("A") 中的 Set 不干扰 set1 中保存的内容,则必须创建一个全新的对象(set1 的副本)。

关于java - addAll() 奇怪地更新了 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29594206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com