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

来源:互联网 发布:良品铺子樱花果冻淘宝 编辑:程序博客网 时间:2024/06/06 17:37

在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);


原创粉丝点击