关闭

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

84人阅读 评论(0) 收藏 举报
分类:

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


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:146001次
    • 积分:2887
    • 等级:
    • 排名:第13955名
    • 原创:134篇
    • 转载:107篇
    • 译文:0篇
    • 评论:4条
    最新评论