`
yunshu321
  • 浏览: 11530 次
社区版块
存档分类
最新评论

关于list 的addall方法和collection的copy方法。

    博客分类:
  • api
阅读更多

有用到两个list的合并。大略研究了一下list.addall和Collections.copy这两个方法。

 

public static class People{
        public String name;
        People(String name){
            this.name = name;
        }
    }
People x = new People("x");
People y = new People("y");
People z = new People("x");
List<people> a = Arrays.asList(new People[]{x, y});
List<people> b = Arrays.asList(new People[]{y, z});
对于a.addall(b), a = {x,y,y,z},是把b的元素添加到a中元素的后面。

 

对于addall方法,可以使用aaddall(1,b),其中1表示你想从a哪个位置(index)把b的全部元素加入到a中,调用之后的结果为a = {x,y,z,y};

 

对于Collections.copy(a, b), a={y,z},是把b的元素按照index放到a中。

Copy b[1,2,3] to  a[4,5,6,7,8] => [1,2,3,7,8]

 

注意a的长度要大于等于b的长度,会报IndexOutOfBounds异常。

 

注意:这里特意用对象是因为这两个方法使用的都是原对象的引用

如果涉及到list中对象的修改,最好不用使用这两个方法。可以使用深克隆来解决问题(注意使用深克隆时单例对象的问题,比如logger)。

 

理解有误敬请指正,不足之处敬请补充,谢谢

分享到:
评论

相关推荐

    Array和Collection相互转换以及copy深度的小测

    2. **CopyOf()** 和 **CopyOfRange()**: 这是`Arrays`类提供的静态方法,可以创建一个新的数组并复制原有数组的内容,然后用`Collections.addAll()`将其转换为`Collection`。 3. 自定义转换:如果你需要转换成其他...

    android 浅复制和深复制-Java Generic Deep Copy 篇

    对于Parcelable,我们可以使用`Parcel`类的`writeParcelable`和`readParcelable`方法进行数据的写入和读取,但这种方法并不直接支持深拷贝。对于Serializable,虽然可以实现深拷贝,但效率较低,不推荐在性能敏感的...

    collections方法集合

    在Java编程中,`java.util.Collections`类扮演着极其重要的角色,它提供了一系列静态方法用于操作和处理各种类型的`Collection`。这些方法不仅简化了开发过程,提高了代码效率,还增强了程序的可读性和可维护性。...

    java-collection-all-in-one.pdf

    ArrayList的复制可以通过构造函数、addAll方法、Collections.copy或stream实现。 Map接口有两个重要的子接口:HashMap和TreeMap。HashMap基于哈希表实现,提供了快速的插入和检索操作,但不保证元素的顺序;TreeMap...

    【Java基础笔记】Java中常用工具类.docx

    7. `addAll(Collection, T... e)`: 将指定的元素添加到集合中。 8. `synchronizedList(List)`: 创建一个线程安全的列表,基于给定的列表。 9. `frequency(Collection, object)`: 统计指定元素在集合中出现的次数。 ...

    jdk1.5中的范型

    public static void copy(List&lt;?&gt; from, List&lt;?&gt; to) { // to is a List // from is a List to.addAll(from); } ``` #### 泛型化老代码 将旧的非泛型代码重构为泛型代码是一项常见的任务。在进行此类重构时,...

    java工具类-正则

    ### Java工具类详解:正则表达式应用及Arrays与Collections常用功能 ...以上就是关于Java中工具类-正则表达式的详细介绍,这些工具类和方法在日常开发中非常实用,掌握它们可以帮助开发者更加高效地完成任务。

    quest-java-collection1

    7. **集合转换**:`Collections`工具类提供了许多静态方法,如`sort()`用于对列表排序,`copy()`用于复制集合,`addAll()`用于合并集合。 8. **并发集合**:在多线程环境下,Java提供了并发安全的集合,如`...

    Generic in java programming language

    void copy(List&lt;?&gt; src, List&lt;?&gt; dest) { dest.addAll(src); // 正确:dest被推断为List } ``` 这里,`dest`的类型被自动推断为`List&lt;? super E&gt;`,这使得我们可以向`dest`添加任何类型的数据,只要这些数据是`E`...

    Copy ArrayList的四种方式

    文章目录简介使用构造函数使用addAll方法使用Collections.copy使用stream总结 Copy ArrayList的四种方式 简介 ArrayList是我们经常会用到的集合类,有时候我们需要拷贝一个ArrayList,今天向大家介绍拷贝ArrayList...

    Java_jihe2.rar_java集合

    - `Collection`:它是所有单值集合的父接口,包括`List`、`Set`和`Queue`等子接口。 - `List`:有序、可重复元素的集合,如`ArrayList`和`LinkedList`。 - `Set`:无序、不重复元素的集合,如`HashSet`、`TreeSet...

Global site tag (gtag.js) - Google Analytics