欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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);	
	}
}

Java中res.add(list)和res.add(new ArrayList<Integer>(list))的区别

总结

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