gpt4 book ai didi

java - ArrayList> 由正在添加的 ArrayList 支持

转载 作者:行者123 更新时间:2023-11-30 08:33:18 27 4
gpt4 key购买 nike

我正在创建一个 ArrayListArrayList并添加 ArrayLists给它。但每次我对 ArrayList 进行更改时, 它反射(reflect)在 ArrayList<ArrayList> 中.

示例:

List<List<String>> list1 = new ArrayList<>();
List<String> list2 = new ArrayList<String>();
list2.add("Cat");
list1.add(list2); //no problem
list2.clear();
list2.add("Dog");
list1.add(list2); //problem! the cat is replaced by two dogs this time!!

我如何确保更新到 list2未反射(reflect)在 list1 中?

最佳答案

简答...替换

list2.clear();

list2 = new ArrayList<String>();

出现此问题是因为 list1.add(list2) 将对 list2 的引用添加到 list1。在任何时候,它都不会复制 list2 引用的列表。因此,您最终将对同一列表对象的多个引用添加到 list1

这是 Java 参数传递工作方式以及集合 API 设计工作方式的结果。

关于java - ArrayList<ArrayList>> 由正在添加的 ArrayList 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39552778/

27 4 0