list.addAll(list1),如果list改变,怎么让list1的值不跟着改变!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了list.addAll(list1),如果list改变,怎么让list1的值不跟着改变!相关的知识,希望对你有一定的参考价值。

List1.addAll(List2)返回的并不是list1,而是添加list2到list1是否成功,如果添加成功就返回true,否则返回 false。

System.out.println(List1.addAll(List2))
改成
List1.addAll(List2);//将List2添加到List1中
System.out.println(List1);//然后再打印List1
这样就可以了,
参考技术A List list = new ArrayList();
list.addAll(list1);
List list2 = new ArrayList();
for(int i=0;i<list.size();i++)
list2.add(list.get(i));


//遍历list,吧list1重新放到另外一个list集合中
参考技术B 你解决了么,今天我刚好遇到了,得用到深克隆.这样就可以解决了.

java进行list1.addall(list2)之后,list2是保留还是清空了?

addAll只是将list2中的数据复制了一份到list1中,list2是不会受到影响的,如果你后续的代码中没有继续使用到list2,那么jvm会在适当的时候回收掉list2所占用的内存,只要有任何一处使用到了list2的引用,GC都不会回收list2的那部分内存 参考技术A 如果之后的程序中没有指向list2的变量,list2就被清空了。 参考技术B 保留了
写了个测试代码
import java.util.ArrayList;
import java.util.List;
public class Test
public static void main(String[] args)
List<Integer> a = new ArrayList<Integer>();

for(int i=0;i<10;i++)
a.add(i);

System.out.println(a);
List<Integer> b = new ArrayList<Integer>();
b.addAll(a);
System.out.println(b);
System.out.println(a);



输出为
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]本回答被提问者采纳
参考技术C 保留 并不会对list2造成影响

以上是关于list.addAll(list1),如果list改变,怎么让list1的值不跟着改变!的主要内容,如果未能解决你的问题,请参考以下文章

java进行list1.addall之后,list2是保留还是清空了

Collection中带有All结尾的常用API详解

java 基础关于 list 集合问题

java 中怎样将2个不同对象的list 和成一个list

java list集合问题

在java中如何合并list