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

Posted vegetabledd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了List中Add()与AddAll()的区别相关的知识,希望对你有一定的参考价值。

我们在开发过程中经常会使用到List<Object> list=new ArrrayList<>(); 这个集合,Object 也可以是String、Integer等。

当我们需要把list集合中的数据放到另外一个集合中(List、Set...),我们也许会使用循环遍历然后将对象存入到新的集合中,这样的方法确实可以实现效果,但是效率太低了。List中给我们提供了Add()、AddAll()二个方法可以帮我们解决这个问题。

 1 List<String> list = new ArrayList<>();
 2 List<List<String>> list1 = new ArrayList<>();
 3 List<String> list2 = new ArrayList<>();
 4 list.add("1");
 5 list.add("2");
 6 list.add("3");
 7 System.out.println(list);    // [1, 2, 3]
 8 list1.add(list);
 9 System.out.println("add方法:"+list1);  //  add方法:[[1, 2, 3]]
10 list2.addAll(list);
11 System.out.println("addAll方法:"+list2);// addAll方法:[1, 2, 3] 

 

由运行结果可以看出来,add();方法是将集合作为一个list实例插入到List集合中了,只有一个实例。

AddAll()方法则是相当于把 list 结果依此遍历又重新插入到新的List集合中,所以新的List集合中仍然有3个实例对象。

list1与list2遍历结果如下:

 1 for (List list3 : list1) {
 2     System.out.println("list1遍历结果:"+list3);
 3 }for (String list4 : list2) {
 4     System.out.println("list2遍历结果:"+list4);
 5 }
 6 //结果:
 7 //list1 遍历结果:[1, 2, 3]
 8 //list2 遍历结果:1
 9 //list2 遍历结果:2
10 //list2 遍历结果:3

 

 

搬运自:https://www.cnblogs.com/ming-blogs/p/10655071.html

以上是关于List中Add()与AddAll()的区别的主要内容,如果未能解决你的问题,请参考以下文章

`PriorityQueue` 中的 `add` 和 `addAll` 行为不同,这是为啥呢?

List.addAll()和=赋值的区别

java进行list1.addall之后,list2是保留还是清空了

java中collection和list区别是什么啊?

JAVA List接口中有几个add方法可以添加元素?

list.addAll()是浅拷贝,如何实现list的深拷贝