Java中的List.addAll复制对象
测试代码
import java.util.ArrayList; import java.util.List; /** * @author yannis * @date create time:2016年10月31日 上午11:10:31 * @version 1.0 * @parameter * @since * @return */ public class Demo { public static void main(String[] args) { List<Person> list1 = new ArrayList<Person>(); list1.add(new Person("li","2", 23)); list1.add(new Person("wang","1", 30)); list1.add(new Person("zhang","2", 40)); list1.add(new Person("hu","2", 35)); list1.add(new Person("chen","1", 60)); List<Person> list2 = new ArrayList<Person>(); list2.addAll(list1); list2.get(0).setName("hanmeimei"); list1.get(1).setName("kkkk"); for(Person person:list1){ System.out.println(person.name); } for(Person person:list2){ System.out.println(person.name); } } static class Person{ private String name; private String sex; private Integer age; public Person(String name, String sex, Integer age) { super(); this.name = name; this.sex = sex; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } } }
通过测试发现,无论此时修改list1,或者list2 都会影响到两个list.运行结果如下
hanmeimei kkkk zhang hu chen hanmeimei kkkk zhang hu chen
由此可见,使用list.addAll只是把后者的对象的地址指向复制给了前面的list。所以造成一改全改
相关推荐
一、List对象中的T是值类型的情况(int 类型等)...1、对于引用类型的List无法用以上方法进行复制,只会复制List中对象的引用,可以用以下扩展方法复制: static class Extensions { public static IList<T> Clone(t
在Java编程中,对象复制是一项常见的任务,特别是在处理模型(Model)和视图对象(VO)时。模型对象通常用于封装业务数据,而视图对象则用于展示这些数据。值复制,即对象属性值的复制,是保持数据一致性和简化代码...
如果List中的元素是基本类型,这种复制方式是没问题的,但如果元素是对象,修改复制后的对象会影响到原始对象,因为它们共享同一份引用。 为了实现深复制,我们需要创建一个新的List,并逐个复制原始List中的每个...
在Java应用中,我们可能需要将Model对象转换为VO对象,这时就需要进行对象复制。 2. **值复制**: 值复制是指复制一个对象时,创建一个新的对象并复制原对象的所有属性值。在Java中,如果类的属性都是基本类型,可以...
浅克隆创建的新对象只复制了原对象的引用,这意味着如果原对象中包含可变的引用类型,如数组或复杂的数据结构,那么新对象和原对象会共享这些引用。因此,对这些引用的修改会影响到两个对象。相反,深克隆不仅复制了...
`list to list` 操作通常指的是将一个列表(list)的内容移动到另一个列表中,这可能涉及到列表的复制、合并或者元素的迁移。下面我们将深入探讨这个主题,同时也会关注到`listtolist.js`这个文件,它可能是...
这样,即使`YourObject`中包含复杂的数据结构,也能确保新对象与原对象完全独立,避免了共享状态的问题。 总结来说,理解并熟练掌握Java的浅复制和深复制在Android开发中至关重要。通过实现`Cloneable`接口并覆写`...
在提供的示例中,`jQuery.extend()` 方法被用来复制 JSON 对象和 JSON 对象集合。`jQuery.extend()` 有两个主要用途:浅拷贝(shallow copy)和深拷贝(deep copy)。浅拷贝只会复制对象的顶层属性,而深拷贝会递归...
如果简单地使用构造函数复制List,新列表将持有原列表中对象的相同引用,而不是新的独立对象。这意味着修改其中一个列表会影响另一个列表,因为它们都指向内存中的同一个对象。 为了解决这个问题,我们可以采用以下...
在某些情况下,我们可能需要将List中的对象转换为另一种类型的对象,但保持其List的结构不变。 ### list转换为JsonArray 在Web开发中,尤其是前后端分离的项目,经常需要将后端Java对象转换为JSON格式的数据,以便...
本文将深入探讨`BeanUtilsBean`对象复制的功能,特别关注它如何实现类型自动转换。`BeanUtilsBean`是BeanUtils的核心类,提供了对JavaBean属性的便捷访问和操作。 首先,让我们理解什么是对象复制。对象复制是指将...
在C#编程语言中,`List<T>` 是一个非常常用的数据结构,它是一个泛型集合,用于存储同一类型的对象数组。这个数据结构提供了许多便利的功能,如动态扩展、索引访问以及各种操作方法。本篇文章将详细介绍在C#中创建`...
标题中的"java对象复制"主要涉及到Java中对象复制的基本概念、实现方法以及相关的注意事项。 首先,Java中的对象复制问题源于其默认的参数传递方式——按引用传递。这意味着当你将一个对象作为参数传递给函数时,...
通过这个示例,我们可以学习到在JavaScript中处理数组中对象去重的一种有效方法,这对于优化代码性能和避免重复数据存储非常有用。同时,了解和掌握相关工具和专题知识能帮助我们更好地应对各种编程挑战。
Java CopyUtil工具类,可以进行对象的深copy,比如:对象里面包含对象,对象里面包含Map,List,Set...等复杂类型的属性都可以copy,copy后的对象与原有对象没有联系,即改变原有对象内容,不会改变copy后的对象里面的...
List的深度复制 浅谈C#中List<T>对象的深度拷贝问题
对象属性值的复制工具类 1.全复制 2.部分复制 3.部分不复制
在这个实现中,流API可能被用来遍历List中的元素,然后通过映射(map)操作将每个元素转换为另一种类型的对象。 反射机制是Java的另一个强大特性,它允许程序在运行时动态地获取类的信息(如类名、字段、方法等)并...
在标题和描述中提到的问题中,当List中的T是引用类型,如myClass类的实例,直接使用`new List(lists1)`创建新的列表lists2,实际上只是创建了一个指向相同元素引用的新列表。这意味着对lists1或lists2的任何修改都会...