zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    pat00-自测5. Shuffling Machine (20)
    Spiral Matrix
    Search in Rotated Sorted Array II
    Search in Rotated Sorted Array
    Best Time to Buy and Sell Stock II
    4Sum
    3Sum Closest
    3Sum
    MySQL存储过程、函数和游标
    Word Ladder
  • 原文地址:https://www.cnblogs.com/feibazhf/p/9885743.html
Copyright © 2011-2022 走看看