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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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造成影响

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

参考技术A 会保留,因为就像 1+2=3;
但1不会因为与2相加之后就消失。
参考技术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);本回答被提问者采纳

以上是关于java进行list1.addall(list2)之后,list2是保留还是清空了?的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

Java KeyNote

将list中某个元素放到第一的位置改怎么做