gpt4 book ai didi

java - HashSet 是否制作添加对象的内部副本?

转载 作者:行者123 更新时间:2023-11-29 09:49:17 26 4
gpt4 key购买 nike

假设我有一个像这样的递归函数

public void someRecur(List<Integer>someList){
if(someBreakCondition)
Set.add(someList);
for(int i = 0; i < someLen ; i++){
someList.add(someInt);
someRecur(someList);
someList.remove(someInt);
}
}

remove 会影响已经放入集合中的列表吗?我应该怎么做才能为集合提供列表的实际副本?

最佳答案

您不会将对象放入 map ;您将 引用 添加到堆中的对象。

Java 数据结构包含对对象的引用,而不是对象本身。如果您从数据结构中删除引用,其他对象可能仍具有该引用的副本。

如果两个对象持有对一个可变对象的引用,那么每个对象都会看到另一个对象所做的更改。 (这就是线程安全很重要的原因。)

当没有人引用堆上的一个对象时,它就有资格进行 GC。

关于java - HashSet 是否制作添加对象的内部副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13047757/

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