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中的所有元素添加到此列表的尾部。如果正在进行此才做时修改指定的collec,那么此操作的行为是不确定的(这意味着如果指定的collection是次列表且此列表是非空的,那么此调用的行为是不确定的)、

AddAll()方法复制的是被添加列表的元素引用,本质上只是复制了元素的引用,并没有复制元素本身。

以调用L1.addAll(L2)为例,当列表里元素为不可变元素(例String)类型时,对L2列表内元素进行更改不会影响到L1,因为String类型本身并不能被修改,对元素的修改本质上都是修改元素引用,而引用是互不影响的。

如果列表内元素为可变元素(例如List、Map)类型,对列表L2内用用的元素的修改是会影响到L1的,因为只复制了引用,而引用指向的是同样的元素。

     List<String> l1 = new ArrayList<String>();// l1为内部存储String类型的列表l1.add("1-1");l1.add("1-2");l1.add("1-3");l1.add("1-4");l1.add("1-5");List<List<String>> l2 = new ArrayList<List<String>>();// l2为内部存储ArrayList类型的列表List<String> l_t1 = new ArrayList<String>();l_t1.add("l_t1_1");List<String> l_t2 = new ArrayList<String>();l_t2.add("l_t1_2");List<String> l_t3 = new ArrayList<String>();l_t3.add("l_t1_3");l2.add(l_t1);l2.add(l_t2);l2.add(l_t3);List<String> l3 = new ArrayList<String>();// 创建空l3列表l3.addAll(l1);// l3列表内添加l1列表l1.set(3, "test");// 修改l1列表内元素的引用System.out.println("l1---" + l1);System.out.println("l3---" + l3);// 二者互不影响List<List<String>> l4 = new ArrayList<List<String>>();// 创建空l4列表l4.addAll(l2);// l4列表内添加l2列表l2.get(1).set(0, "update");l2.get(1).add("add");// 对l2列表内的元素进行修改List<String> l_t = new ArrayList<String>();l_t.add("test");l2.set(1, l_t);// 对l2列表内元素的引用进行修改System.out.println("l2---" + l2);System.out.println("l4---" + l4);// 如果修改l2列表内元素,互相影响,如果修改l2列表内元素的引用,互不影响。

List集合中add()方法和addAll()方法的区别相关推荐

  1. python predict_对Keras中predict()方法和predict_classes()方法的区别说明

    1 predict()方法 当使用predict()方法进行预测时,返回值是数值,表示样本属于每一个类别的概率,我们可以使用numpy.argmax()方法找到样本以最大概率所属的类别作为样本的预测标 ...

  2. java——Scanner中nextLine()方法和next()方法的区别

    遇到一个有意思的东西,在整理字符串这块知识的时候,发现我在用Scanner函数时,在字符串中加入空格,结果空格后面的东西没有输出来(/尴尬),不多说直接上代码: import java.util.Sc ...

  3. ExtJS中listener方法和handler方法的区别

    listener方法和handler方法的区别在文档中的说明的太玄乎了,看不懂 listeners监听能够对一个click Event事件添加任意多个的事件响应处理函数 而handler处理只能够通过 ...

  4. Keras中predict()方法和predict_classes()方法的区别

    正如上篇博客中所讲,在Keras框架下执行深度学习任务时,一般会先根据训练数据集训练出模型,然后拿训练好的模型到生产环境(测试集)中部署并生产.以分类问题为例,当训练好了分类模型之后,我们要用这个模型 ...

  5. VBA中Activate方法和Select方法的区别

    VBA中的Activate方法和Select方法看起来似乎相同,其实二者是有区别的.Activate方法的作用是激活,而Select方法的作用是选择.其区别如下: 1.对于"Sheets&q ...

  6. jQuery中find()方法和filter()方法的区别

    jQuery官方的API这样说明filter和find函数: filter(selector):Description: Reduce the set of matched elements to t ...

  7. jquery中prop()方法和attr()方法的区别浅析

    引用:http://www.jb51.net/article/41170.htm 官方例举的例子感觉和attr()差不多,也不知道有什么区别,既然有了prop()这个新方法,不可能没用吧,那什么时候该 ...

  8. Scanner中nextLine()方法和next()方法的区别

    我们在使用扫描器Scanner时,遇到了字符串肯定会使用API中定义好的next()和nextLine()方法.两者一个是能读取空格一个是不能读取空格就像下面的样子 当我们把二者交换位置,再来看一下效 ...

  9. Java类型转换中valueOf方法和parseInt方法的区别

    在Java的类型转换中,我们经常会使用valueOf或者parseInt(parseFloat/parseDouble等)来转换.这二者有什么区别呢?我们看如下的代码: String inputVal ...

最新文章

  1. 2018-3-10论文(网络评论非结构化信息表示与应用研究)笔记-----基于证据理论的综合评价模型建立
  2. docker删除es数据_docker问题:quot;rpc error: code = 2 desc = containerd: container ...quot;
  3. 关于Enterprise Library 两个网占.
  4. 智能传感器深度报告:未来机器感官的百亿美元市场【附下载】
  5. JavaScript的特殊函数
  6. leetcode202(Floyd判圈算法(龟兔赛跑算法))
  7. apache的prefork和workder模式
  8. Ubuntu出现卡logo、卡住、黑屏无法正常启动、屏幕和键盘背光无法调节等一系列问题?可能是NVIDIA显卡驱动没装好...
  9. 【网络配置】双网卡访问
  10. 全国计算机等级考试题库二级C操作题100套(第09套)
  11. 重复控件Repeater和数据列表控件DataList
  12. Hadoop入门扫盲:hadoop发行版介绍与选择
  13. Java中startWith方法的使用!
  14. 千万数据去重_如何在 1 秒内做到大数据精准去重?
  15. 中国开放教育资源协会
  16. 通过jdt解析spring mvc中url-类-方法的对应关系
  17. 《我家侯爷不宠我》盛大开机,丹青映画国漫IP再次“破壁”
  18. U盘中毒后被隐藏的文件夹无法隐藏选项无法取消
  19. GPU 共享内存地址映射方式
  20. Doxyfile 生成CHM

热门文章

  1. 企鹅号自媒体如何快速转正,企鹅号怎么过三级
  2. 三国志战略版:Daniel_S2最强蜀弓配置
  3. nc65命令执行漏洞上传webshell学习笔记
  4. SQL用逗号分隔两张表查询
  5. ajax 循环json,Ajax 遍历json
  6. 提高网页响应速度:优化你的 CDN 性能
  7. 什么是受 DRM 保护的内容?
  8. servlet的url-pattern匹配规则
  9. java毕业设计企业物资管理系统源码+lw文档+mybatis+系统+mysql数据库+调试
  10. fget函数读取一行数据,非二进制文件 -- linux