gpt4 book ai didi

java - arraylist = arraylist 和 arraylist.addAll(arraylist) 之间的区别

转载 作者:行者123 更新时间:2023-12-02 12:49:44 32 4
gpt4 key购买 nike

将一个数组列表分配给另一个数组列表与在两个数组列表之间使用 addAll 方法有什么区别?

1 > arrayList = arrayList;//应该将后面的arrayList的值分配给第一个。

2> arrayList.addAll(arrayList)//将后面列表的所有数据添加到前面。

第一个完全替换列表中的数据?第二个用于在列表中附加数据(如果已有)???

如果我执行 arrayList.add(arrayList) 而不将任何数据分配给第一个列表,它会插入任何数据吗?

我做了以下代码进行测试,发现了我并不真正知道的结果。

secondList.add("1");
secondList.add("2");

firstList = secondList;
Log.i("CHECK","first list = "+ firstList);

firstList.addAll(secondList);
Log.i("CHECK","Firs list add : "+firstList);

firstList.clear();
firstList.addAll(secondList);
Log.i("CHECK","Firs list add 2 : "+firstList);

结果是:

CHECK: first list =  [1, 2]
CHECK: Firs list add : [1, 2, 1, 2]
CHECK: Firs list add 2 : []

我期望最后一个日志的结果如下:[1,2]

docs.oracle.com 中所述

addAll- Appends all of the elements in the specified collection to the end of this list, in the order that they are returned by the specified collection's Iterator.

如果列表中没有数据?那么 addAll 会做什么?

最佳答案

当你这样做时:

firstList = secondList;

你所说的实际上是“让firstListsecondList引用同一个列表”。该行执行后,只会有一个列表,并且有两个变量都引用该列表。

这就是为什么在清除 firstList 后,secondList 也丢失了所有元素。他们指的是同一件事。这与addAll无关。当您调用 firstList.addAll(secondList) 时,您基本上是将一个空列表附加到另一个空列表,从而产生一个空列表。

关于java - arraylist = arraylist 和 arraylist.addAll(arraylist) 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43271896/

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