Java中res.add(list)和res.add(new ArrayList<Integer>(list))的区别
程序员文章站
2022-04-21 21:16:48
先说结论res.add(list)为浅拷贝;res.add(new ArrayList(list))为深拷贝。看代码import java.util.ArrayList;public class Test {public static void main(String[] args) {ArrayList list = new ArrayList();list.add(1);list.add(2);list.a...
先说结论
res.add(list)
为浅拷贝;res.add(new ArrayList(list))
为深拷贝。
看代码
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
ArrayList<ArrayList<Integer>> res_2 = new ArrayList<ArrayList<Integer>>();
res.add(list);
res_2.add(new ArrayList<Integer>(list));
System.out.println("res为:");
System.out.println(res);
System.out.println("res_2为:");
System.out.println(res_2);
list.add(4);
res.add(list);
res_2.add(new ArrayList<Integer>(list));
System.out.println("res为:");
System.out.println(res);
System.out.println("res_2为:");
System.out.println(res_2);
}
}
总结
res.add(list)
添加一个list后,list如果改变,res里的值会
跟着改变。res.add(new ArrayList(list))
添加一个list后,list如果改变,res里的值不会
跟着改变。
参考博客
https://blog.csdn.net/weixin_42707971/article/details/107609388
本文地址:https://blog.csdn.net/Awt_FuDongLai/article/details/110469066
推荐阅读
-
Java中res.add(list)和res.add(new ArrayList<Integer>(list))的区别
-
C#中数组、ArrayList和List三者的区别详解及实例
-
C#中数组、ArrayList和List三者的区别
-
Java中List<T>和List<?>的区别详解
-
C#中数组、ArrayList和List三者的区别详解
-
java关于List数组和类数组中的Collections和Arrays的sort区别
-
Java中res.add(list)和res.add(new ArrayList<Integer>(list))的区别
-
C#中数组、ArrayList和List三者的区别
-
Java 面试题之反射的应用(如何在List<String> list = new ArrayList<String>();中放入Integer类型的数据)
-
C#中数组、ArrayList和List三者的区别详解及实例