关闭

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

195人阅读 评论(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
查看评论

Collections类中排序方法

import java.util.*; /*集合排序 List集合中可以使用Collections.sort()方法 在需要求逆序时可以使用Collections.reverseOrder()方法,该方法返回一个逆序比较器 */ class StrLenComp implements Com...
  • ZJQLOVELYY
  • ZJQLOVELYY
  • 2013-01-09 23:07
  • 6722

Collections工具类的sort方法

Collections是一个工具类 例如比较常用的Arrays类就是一个工具类,它在java.util.Arrays包中,提供了很多操作数组的各种静态方法. Collections工具类在java.util.Collections包中,用来操作Collection对象,也是java集合框架中的一员....
  • clemontine
  • clemontine
  • 2016-10-23 17:12
  • 1486

Java中的Copy-On-Write 容器

Java中的Copy-On-Write 容器Java中的Copy-On-Write 容器 CopyOnWrite容器 CopyOnWrite的缺点 CopyOnWriteArrayListDemo范例CopyOnWrite容器CopyOnWrite 容器即写时复制容器,原理就是当我们往一个容器添加元...
  • cjm812752853
  • cjm812752853
  • 2017-01-12 13:09
  • 340

Java中线程的三种实现方式

Java中使用Thread代表线程类,所有的线程类都必须是Thread类或者其子类的实例。每个线程的作用就是完成一定的任务,即执行一段程序流。Java中使用线程执行体来表示这段程序流。 Java中线程的实现方式有如下三种: 1.继承Thread类 public class Thread exte...
  • FFFLLLLLL
  • FFFLLLLLL
  • 2016-08-21 22:39
  • 2175

Java集合类Collections常用方法总结

public class CollectionsTest { public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); ...
  • wangshuang1631
  • wangshuang1631
  • 2016-11-17 15:33
  • 3012

[Java错误]使用Collections中的copy方法复制ArrayList产生的错误

错误信息如下: Exception in thread "main" java.lang.IndexOutOfBoundsException: Source does not fit in dest at java.util.Collections.copy(Unknown ...
  • u010536377
  • u010536377
  • 2014-12-18 21:12
  • 1286

Collection与Collections;Array与Arrays

1:Collection是就和接口,set与list都是由其派生的接口。       Collections是关于集合的工具类,封装了关于集合操作的静态方法,可以直接调用,比如Collections.sort(); 2:Array是关于数组的接口,位于java.sql包...
  • qq_23617681
  • qq_23617681
  • 2016-03-17 14:56
  • 175

Collections类常用方法总结

此类完全由在 collection 上进行操作或返回 collection 的静态方法组成。它包含在 collection 上操作的多态算法,即“包装器”,包装器返回由指定 collection 支持的新 collection,以及少数其他内容 如果为此类的方法所提供的 collection 或类...
  • CNZYYH
  • CNZYYH
  • 2016-12-01 12:02
  • 312

Collections类的用法

Collections类克Collection接口的区别,Collections类主要提供大量方法对Set,List和Map等集合的元素的排序、查询和修改等操作,还提供将集合对象设置为不可变,对集合对象实现同步控制等方法。而Collection接口是Set,List等容器的祖先。 Collecti...
  • qq_21927765
  • qq_21927765
  • 2016-03-06 09:46
  • 573

Collections工具类中的sort方法

1.了解Collections工具类 Collections工具类是java集合框架的成员,是一种用来操作集合对象的工具类,在Collections类中有一个sort()方法,可以对给定的集合进行排序。集合列表中所有元素都要实现Comparable接口。由于不可使用基本类型作为泛型,我们对它们相应...
  • Bazingaea
  • Bazingaea
  • 2016-03-14 14:08
  • 1278
    个人资料
    • 访问:191694次
    • 积分:3422
    • 等级:
    • 排名:第11582名
    • 原创:145篇
    • 转载:109篇
    • 译文:0篇
    • 评论:4条
    最新评论