gpt4 book ai didi

java - 将变量添加到集合后删除它

转载 作者:行者123 更新时间:2023-12-01 19:55:53 25 4
gpt4 key购买 nike

在下面的代码片段中,我希望 list 成为 map 的集合。我没有每次都创建一个新的 HashMap,而是尝试清除并重用以前的变量。

    List<Map> list = new ArrayList<>();
Map<String,String> aMap = new HashMap<>();
aMap.put("fou","bar");
list.add(aMap);
aMap.clear();
aMap.put("big", "bang");
list.add(aMap);
System.out.println(list.toString());

令我惊讶的是列表中的值会受到变量aMap上的“clear”操作的影响,输出如下:

   [{big=bang}, {big=bang}]

这是怎么回事?

最佳答案

这是一个棘手的问题:) 基本上,列表保存对对象的引用,而不是对象的副本。因此,当您将 aMap 添加到列表时,您将添加对该 Map 变量的引用。然后修改它(通过这样做,您可以修改列表中保存的引用),然后再次将相同的变量添加到列表中。所以现在你有同一个对象的两个引用(或者指针,如果你愿意的话)。这就是为什么你会得到这样的结果。

关于java - 将变量添加到集合后删除它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49776878/

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