• List的深度copy和浅度拷贝


     1         List<Student> 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<Student> 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

  • 相关阅读:
    小w的喜糖(candy)
    亚瑟王(arthur)
    Bajtman i Okrągły Robin
    Bajtman i Okrągły Robin
    网络流模板
    网络流模板
    觉醒力量 (hidpower)
    觉醒力量 (hidpower)
    E-card
    E-card
  • 原文地址:https://www.cnblogs.com/feibazhf/p/9885743.html
Copyright © 2020-2023  润新知