Collections实现Java容器复制的三种方法

在Java中,我们经常需要使用List等容器存储数据,有时需要进行将存储数据的容器进行复制备份,但是如果使用 newList=oldList ,则newList只是指向了oldList的引用,当oldList改变时,newList也会进行改变。本篇我列举了三种复制容器内容的方法,当其中一个容器的内容变化时,不会引起另一个容器内容的改变。 

/*创建一个存储数据的ArrayList链表*/
List<Integer> intList=new ArrayList<Integer>(Arrays.asList(new Integer[]{4,2,6,8,1}));
System.out.println("intList的值为:"+intList);

/*第一种方法*/
List<Integer> newList1=new ArrayList<Integer>(Arrays.asList(new Integer[intList.size()]));
Collections.copy(newList1, intList);
System.out.println("newList1的值为:"+newList1);

/*第二种方法*/
List<Integer> newList2=new ArrayList<Integer>();
Collections.addAll(newList2, new Integer[intList.size()]);
Collections.copy(newList2, intList);
System.out.println("newList2的值为:"+newList2);

/*第三种方法*/
List<Integer> newList3=new ArrayList<Integer>();
newList3.addAll(intList);
System.out.println("newList3的值为:"+newList3);

/*改变intList的值,发现复制的List变量的内容都没有改变*/
System.out.println("=============请叫我分界线=============");
intList.set(1, new Integer(0));
System.out.println("intList的值为:"+intList);
System.out.println("newList1的值为:"+newList1);
System.out.println("newList2的值为:"+newList2);
System.out.println("newList3的值为:"+newList3);


阅读更多
版权声明:本文的原作者 http://blog.csdn.net/mooncom/article/ ,支持原著,拒绝盗版。 https://blog.csdn.net/MOONCOM/article/details/78133290
个人分类: Java
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭