如何使用集合的 addall() 方法?

Posted

技术标签:

【中文标题】如何使用集合的 addall() 方法?【英文标题】:how to use addall() method of collections? 【发布时间】:2011-03-04 09:51:36 【问题描述】:

我需要用它来合并两个有序的对象列表。

【问题讨论】:

合并是什么意思?你想做什么? 【参考方案1】:

我正在编写一些 android 代码,我发现这非常简短和方便:

    card1 = (ImageView)findViewById(R.id.card1);
    card2 = (ImageView)findViewById(R.id.card2);
    card3 = (ImageView)findViewById(R.id.card3);
    card4 = (ImageView)findViewById(R.id.card4);
    card5 = (ImageView)findViewById(R.id.card5);

    card_list = new ArrayList<>();
    card_list.addAll(Arrays.asList(card1,card2,card3,card4,card5));

与我过去采用的这种标准方式相比:

    card1 = (ImageView)findViewById(R.id.card1);
    card2 = (ImageView)findViewById(R.id.card2);
    card3 = (ImageView)findViewById(R.id.card3);
    card4 = (ImageView)findViewById(R.id.card4);
    card5 = (ImageView)findViewById(R.id.card5);

    card_list = new ArrayList<>();
    card_list.add(card1) ;
    card_list.add(card2) ;
    card_list.add(card3) ;
    card_list.add(card4) ;
    card_list.add(card5) ;

【讨论】:

我会写:“card_list.add(card1 = (ImageView)findViewById(R.id.card1));”如果我真的需要变量而不仅仅是列表。【参考方案2】:

来自 API:

addAll(Collection&lt;? extends E&gt; c):将指定集合中的所有元素添加到此集合中(可选操作)。

这是一个使用List 的示例,它是一个有序集合:

    List<Integer> nums1 = Arrays.asList(1,2,-1);
    List<Integer> nums2 = Arrays.asList(4,5,6);

    List<Integer> allNums = new ArrayList<Integer>();
    allNums.addAll(nums1);
    allNums.addAll(nums2);
    System.out.println(allNums);
    // prints "[1, 2, -1, 4, 5, 6]"

开启int[]Integer[]

虽然int 可以自动装箱到Integer,但int[] 不能“自动装箱”到Integer[]

因此,您会得到以下行为:

    List<Integer> nums = Arrays.asList(1,2,3);
    int[] arr =  1, 2, 3 ;
    List<int[]> arrs = Arrays.asList(arr);

相关问题

Arrays.asList() not working as it should?

【讨论】:

有些库提供int[] &lt;-&gt; Integer[]转换,或者你可以使用Guava的Ints.asList(int...)addAllList&lt;Integer&gt;等。如果这是OP想要的,我可以详细说明这些点去做。 这告诉我 List : List 类型不是通用的;它不能用参数 参数化【参考方案3】:
Collection all = new HashList();
all.addAll(list1);
all.addAll(list2);

【讨论】:

是不是addAll不能应用于int[]? @bhavna:不是根据 API 文档中的签名,不是:java.sun.com/javase/6/docs/api/java/util/…

以上是关于如何使用集合的 addall() 方法?的主要内容,如果未能解决你的问题,请参考以下文章

两个addAll() 方法的区别

java 集合和addAll()方法

List中Add()与AddAll()的区别

Collections -集合排序compareTo方法重写,shuffle,addall

java中如何将多个list集合对象拼接成一个集合对象

Java的PriorityQueue构造函数调用和addAll方法的区别