如何使用集合的 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<? extends E> 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[] <-> Integer[]
转换,或者你可以使用Guava的Ints.asList(int...)
和addAll
到List<Integer>
等。如果这是OP想要的,我可以详细说明这些点去做。
这告诉我 ListCollection all = new HashList();
all.addAll(list1);
all.addAll(list2);
【讨论】:
是不是addAll不能应用于int[]? @bhavna:不是根据 API 文档中的签名,不是:java.sun.com/javase/6/docs/api/java/util/…以上是关于如何使用集合的 addall() 方法?的主要内容,如果未能解决你的问题,请参考以下文章