java 集合类型的clone
来源:互联网 发布:正规网络兼职有哪些 编辑:程序博客网 时间:2024/05/24 06:27
前一篇写到java中深层拷贝(Deep Copy)和浅层拷贝(Shadow Copy)。http://blog.csdn.net/jazywoo123/article/details/8000185
由于集合本身就是采用引用的方式保存元素的,所以集合.clone()产生的对象其对元素的保存方式也是引用。比如,ArrayList类对象ar 中有元素student1, student2(的引用),现在copy = ar.clone().那么copy中所保存的也只是student1 和student2 的引用。
这说明,使用集合的clone功能,并不是获得我们所想象的如同一般对象那样获得非引用的拷贝。要实现集合的拷贝,必须新建一个集合,然后将原集合中元素的clone逐一加到新的集合中。如示例程序:
//浅层拷贝
import java.util.*;public class ShadowCopy { public static void main(String[] args) throws Exception{ Student st1 = new Student(1, "no1"); Student st2 = new Student(2, "no2"); ArrayList ar = new ArrayList(); ar.add(st1); ar.add(st2); ArrayList copy = (ArrayList)ar.clone(); //直接使用集合的clone功能 ((Student)copy.get(1)).setStudent(222, " no22");//由结果可以看到,这里对copy的修改影响了ar。 System.out.println((Student)ar.get(1)); System.out.println((Student)copy.get(1)); } }输出:222 no22
//深层拷贝
import java.util.*;public class DeepCopy { public static void main(String[] args) throws Exception{ Student st1 = new Student(1, "no1"); Student st2 = new Student(2, "no2"); ArrayList ar = new ArrayList(); ar.add(st1); ar.add(st2); ArrayList copy = new ArrayList(); //这里演示Deep Copy的方法 copy.add(st1.clone()); copy.add(st2.clone()); ((Student)copy.get(1)).setStudent(222, " no22"); //这样,对copy的修改不会影响ar。 System.out.println((Student)ar.get(1)); System.out.println((Student)copy.get(1)); } }输出:2no2222 no22
- java 集合类型的clone
- 集合的clone
- java中的clone()方法的研究---(5)如何编写正确的clone()方法:String类型
- java中的clone()方法的研究---(8)如何编写正确的clone()方法:数组类型
- Java集合之Map类型的集合
- 理解JAVA的集合类型
- 关于集合的clone()函数
- 浅谈Java的Clone
- java 的clone方法
- Java的clone机制
- java 的clone
- 关于Java的clone()
- 理解java的clone
- java里的clone
- JAVA的Clone
- Java的clone方法
- java的clone方法
- 关于Java的clone()
- C#中 一次执行多条带GO的sql语句
- win32程序测试键盘钩子
- java 网络编程 -- IP地址的表示与网络接口信息的获取(InetAddress和NetworkInterface)
- android 相对布局
- C# 创建SQL Server 2005数据库及建表
- java 集合类型的clone
- HDU 2897 邂逅明下
- 爱 不说再见
- Java字符串跟ASCII码互转 收藏
- Android下打印调用栈
- WorkflowApplication 应用中变量、参数、书签
- cocos2d-x Action:补间动作
- go语言编程在windows下开发环境配置(图文)
- 可以输入的html下拉框