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)

此方法按照指定 collection 的迭代器所返回的元素顺序,将该 collection 中的所有元素添加到此列表的尾部。如果正在进行此操作时修改指定的 collection ,那么此操作的行为是不确定的(这意味着如果指定的 collection 是此列表且此列表是非空的,那么此调用的行为是不确定的)。

C             包含要添加到此列表中的元素的 collection

return     如果此列表由于调用而发生更改,则返回 true

NullPointerException: 如果指定的 collection 为 null

Throws

eg:
Collection result = new ArrayList();
Collection list = new ArrayList();
......
分析:
result.addAll(list);   // 把list中的每一个元素加到result中,result.size() == list.size()
result.add(list);       // 将list作为一个元素加到result中,则result.size()为1

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-18 08:47:24

List 的add()与addAll()的区别的相关文章

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

我们在开发过程中经常会使用到List<Object> list=new ArrrayList<>(); 这个集合,Object 也可以是String.Integer等. 当我们需要把list集合中的数据放到另外一个集合中(List.Set...),我们也许会使用循环遍历然后将对象存入到新的集合中,这样的方法确实可以实现效果,但是效率太低了.List中给我们提供了Add().AddAll()二个方法可以帮我们解决这个问题. 1 List<String> list = ne

Java里 ArrayList 中 add 与addAll的区别

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

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(

JAVAAPI学习之Calendar类;Calendar类set()、add()、roll()方法区别

JAVAAPI学习之Calendar类 http://blog.csdn.net/myjlvzlp/article/details/8065775(写的很好,清晰易懂) Calendar类set().add().roll()方法区别 http://www.360doc.com/content/15/0616/16/25883431_478549940.shtml http://blog.csdn.net/csdnbenbenchong/article/details/7010908

PHP memcache add replace set的区别和其他用法收集

add replace set的区别 最近在面试时遇到一个问题 memcache 的add replace set的区别,故在此进行加强 add 是向服务器添加一个缓存的数据,当该键已存在会返回一个false,否则返回一个true replace 是在服务器内一个替换一个缓存的数据,当该键不存在时会返回一个false,否则返回true set 则是add和replace的集合体,如果该键存在就替换,不存在就设置,返回的是true increment decrement delete加法减法删除运

LinkedBlockingQueue的put,add跟offer的区别(转)

LinkedBlockingQueue的put,add和offer的区别 最近在学习<<Java并发编程实践>>,有很多java.util.concurrent包下的新类.LinkedBlockingQueue就是其中之一,顾名思义这是一个阻塞的线程安全的队列,底层应该采用链表实现. 看其API的时候发现,添加元素的方法竟然有三个:add,put,offer. 且这三个元素都是向队列尾部添加元素的意思.于是我产生了兴趣,要仔细探究一下他们之间的差别. 1.首先看一下add方法: I

Add Service References 和 Add Web References的区别

Add Service References 和 Add Web References的区别 在项目过程中,需要添加Web服务引用,发现两种用法.搜索了一下相关信息,才知道: VS2005里提供的Add Web Reference(添加Web服务引用)的功能主要是添加Web Service引用. VS2008保留了Add Web Reference(添加Web服务引用)也是为了版本向前兼容.目前很多项目还是基于.NET Framework 2.0. VS2008在升级以后为了对.NET Fram

LinkedBlockingQueue的put,add跟offer的区别

LinkedBlockingQueue的put,add和offer的区别 最近在学习<<Java并发编程实践>>,有很多java.util.concurrent包下的新类.LinkedBlockingQueue就是其中之一,顾名思义这是一个阻塞的线程安全的队列,底层应该采用链表实现. 看其API的时候发现,添加元素的方法竟然有三个:add,put,offer. 且这三个元素都是向队列尾部添加元素的意思.于是我产生了兴趣,要仔细探究一下他们之间的差别. 1.首先看一下add方法: I

在 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(添加服务引用)功