博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
List的深度copy和浅度拷贝
阅读量:5897 次
发布时间:2019-06-19

本文共 908 字,大约阅读时间需要 3 分钟。

1         List
list= Arrays.asList( 2 new Student("Fndroid", 22, Student.Sax.MALE, 180), 3 new Student("Jack", 20, Student.Sax.MALE, 170), 4 new Student("Liliy", 18, Student.Sax.FEMALE, 160) 5 ); 6 List
list2= new ArrayList<>(); 7 list2.addAll(list); 8 list.get(0).setAge(15); 9 10 System.out.println(list2.get(0).getAge());

上面一段代码 你会发现 list2里的第一个元素也是15,也就是说你虽然拷贝了一个list,但是还是指向原来的对象,你改变原来的对象的属性值,拷贝的list里的对象属性也会变,

大家应该理解浅拷贝和深拷贝的区别:

浅拷贝:被复制对象的任何变量都含有和原来的对象相同的值,而任何的对其他对象的引用仍然指向原来的对象。对拷贝后的引用的修改,还能影响原来的对象。

深拷贝:把要复制的对象所引用的对象都复制了一遍,对现在对象的修改不会影响原有的对象。

参考资料:

 ArrayList的深度copy和浅度拷贝:https://blog.csdn.net/zouqingfang/article/details/46623563

 项目中copy List 数据,解决修改值后改变原值问题:https://my.oschina.net/farces/blog/277488

转载于:https://www.cnblogs.com/feibazhf/p/9885743.html

你可能感兴趣的文章
ubuntu下安装libxml2
查看>>
nginx_lua_waf安装测试
查看>>
WinForm窗体缩放动画
查看>>
JQuery入门(2)
查看>>
linux文件描述符
查看>>
C++ const 详解
查看>>
传值引用和调用引用的区别
查看>>
Hive简介
查看>>
hyper-v 无线网连接
查看>>
Python3.7.1学习(六)RabbitMQ在Windows环境下的安装
查看>>
Windows下memcached的安装配置
查看>>
ubuntu: firefox+flashplay
查看>>
常见的海量数据处理方法
查看>>
web.xml 中CharacterEncodingFilter类的学习
查看>>
贪吃蛇逻辑代码
查看>>
实现c协程
查看>>
ASP.NET视频教程 手把手教你做企业论坛网站 视频教程
查看>>
[LeetCode] Meeting Rooms II
查看>>
从Swift学习iOS开发的路线指引
查看>>
Scribes:小型文本编辑器,支持远程编辑
查看>>