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

原文地址:https://www.cnblogs.com/vegetableDD/p/11651266.html

时间: 2024-08-09 17:39:49

List中Add()与AddAll()的区别的相关文章

Java里 ArrayList 中 add 与addAll的区别

我们经常都有这样的需求,需要把一个list的数据全部放到另一个list当中,最笨的方法当然是一个个遍历进行添加,但是Java中提供一个addAll方法. 与add方法不一样的是,add方法是添加一个item,不管你是一个什么类型的数据,都给放到item里作为一个数据进行添加.而addAll则是对相同类型的数据,对现有的list进行拼接(可能说法不严谨).举个例子: 下面有两个List,我想将第二个List的数据添加到第一个List当中,用add方法的话是这样添加的: for(String ite

List 的add()与addAll()的区别

add 是将传入的参数作为当前List中的一个Item存储,即使你传入一个List也只会另当前的List增加1个元素 addAll 是传入一个List,将此List中的所有元素加入到当前List中,也就是当前List会增加的元素个数为传入的List的大小 即 addAll(Collection c) add(int index, Elelemt e) -------------------------------------- addAll(Collection c) 此方法按照指定 colle

LinkedList中add和offer的区别

offer属于 offer in interface Deque<E>,add 属于 add in interface Collection<E>. 当队列为空时候,使用add方法会报错,而offer方法会返回false. 作为List使用时,一般采用add / get方法来 压入/获取对象. 作为Queue使用时,才会采用 offer/poll/take等方法作为链表对象时,offer等方法相对来说没有什么意义这些方法是用于支持队列应用的.  

在 VS 类库项目中 Add Service References 和 Add Web References 的区别

原文:在 VS 类库项目中 Add Service References 和 Add Web References 的区别 出身问题: 1.在vs2005时代,Add Web Reference(添加Web服务引用)的功能主要是添加Web Service引用.基于.NET Framework 2.0. 2.自VS2008以后,为了对.NET Framework 3.0 或 3.5版本上WCF Service Library的支持.增加了Add Service Reference(添加服务引用)功

Calendar中add函数和roll函数的用法及区别

Calendar中add()和roll()函数的用法一.取某个时间点后的整点时刻.例如1984年7月7日15:23:05后的整点时刻即为1984-07-07 16:00:00.实现如下:Calendar calendar = Calendar.getInstance();calendar.add(Calendar.HOUR_OF_DAY, 1);//小时上加1calendar.set(Calendar.MINUTE, 0);//分钟设为0calendar.set(Calendar.SECOND,

java中List 和 Set 的区别

a. 特性 两个接口都是继承自Collection?,是常用来存放数据项的集合,主要区别如下:      ① List和Set之间很重要的一个区别是是否允许重复元素的存在,在List中允许插入重复的元素,而在Set中不允许重复元素存在. ? ② 与元素先后存放顺序有关,List是有序集合,会保留元素插入时的顺序,Set是无序集合. ? ③ List可以通过下标来访问,而Set不能. b. 常见实现类 ? (1) List接口 常见实现类如下: ? ArrayList(数组实现):允许对元素进行快

【翻译】JAVA中抽象类和接口的区别

不知道有没有人翻译过了,这篇是挺简单的,权当复习一遍内容吧. 很多常见的面试问题如"抽象类和接口有什么区别","你在什么时候用抽象类什么时候用接口".所以在这篇文章里面,我们会讨论一下这个话题. 在开始讨论它们的区别之前,我们先看看它们的介绍. Abstract class 抽象类 抽象类被用来抽象出子类的共同特征.它是不能被实例化的,它只能被子类继承作为超类使用.抽象类被用作它的子类下的层次结构创建模板(Abstract classes are used to c

.NET中struct与class的区别

在.net中的struct与class有很多相似之处,比如可以直接new,对于成员可以直接XX.field,以至于有不少程序员在用时,将其混在一起,分不清有何区别.这两者有何区别呢? 1.类型不同 我们先来看一段代码 static void Main(string[] args) { TypeDemo(); Console.ReadLine(); } // Reference type (because of 'class') class SomeClassRef { public Int32

java 学习之List 的 add 与set方法区别

/** * 在List集合中众多方法中,add(int index,Object obj)方法与set(int index,Object e)方法不易区分 * ,通过下面实例,可以看出两个方法中的区别 */ package gao; import java.util.Iterator; import java.util.LinkedList; import java.util.List; public class CollectionDemo { public static void main(