List中Add()与AddAll()的区别
我们在开发过程中经常会使用到List<Object> list=new ArrrayList<>(); 这个集合,Object 也可以是String、Integer等。
当我们需要把list集合中的数据放到另外一个集合中(List、Set...),我们也许会使用循环遍历然后将对象存入到新的集合中,这样的方法确实可以实现效果,但是效率太低了。List中给我们提供了Add()、AddAll()二个方法可以帮我们解决这个问题。
List<String> list = new ArrayList<>();
List<List<String>> list1 = new ArrayList<>();
List<String> list2 = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
System.out.println(list);
list1.add(list);
System.out.println("add方法:"+list1);
list2.addAll(list);
System.out.println("addAll方法:"+list2);
运行结果:
[1, 2, 3]
add方法:[[1, 2, 3]]
addAll方法:[1, 2, 3]
由运行结果可以看出来,add();方法是将集合作为一个list实例插入到List集合中了,只有一个实例。
AddAll()方法则是相当于把 list 结果依此遍历又重新插入到新的List集合中,所以新的List集合中仍然有3个实例对象。
list1与list2遍历结果如下:
for (List list3 : list1) {
System.out.println("list1遍历结果:"+list3);
}for (String list4 : list2) {
System.out.println("list2遍历结果:"+list4);
}
结果:
list1 遍历结果:[1, 2, 3]
list2 遍历结果:1
list2 遍历结果:2
list2 遍历结果:3
List中Add()与AddAll()的区别的更多相关文章
- list add() 和 addall()的区别
http://blog.tianya.cn/post-4777591 如果有多个已经被实例化的List 集合,想要把他们组合成一个整体,并且,这里必须直接使用List 自身提供的一个方法List.ad ...
- ThinkPHP中:add()和addAll()的区别
1.add()是记录单条插入 // 添加一条数据 $User = M("User"); // 实例化User对象 $data['name'] = 'ThinkPHP'; $data ...
- List 的add()与addAll()的区别
add 是将传入的参数作为当前List中的一个Item存储,即使你传入一个List也只会另当前的List增加1个元素addAll 是传入一个List,将此List中的所有元素加入到当前List中,也就 ...
- 队列Queue中add()和offer()的区别?
区别:两者都是往队列尾部插入元素,不同的时候,当超出队列界限的时候,add()方法是抛出异常让你处理,而offer()方法是直接返回false
- 在 VS 类库项目中 Add Service References 和 Add Web References 的区别
原文:在 VS 类库项目中 Add Service References 和 Add Web References 的区别 出身问题: 1.在vs2005时代,Add Web Reference(添加 ...
- java Queue中 add/offer,element/peek,remove/poll区别
转自https://blog.csdn.net/u012050154/article/details/60572567 java Queue中 add/offer,element/peek,remov ...
- Calendar中add函数和roll函数的用法及区别
Calendar中add()和roll()函数的用法一.取某个时间点后的整点时刻.例如1984年7月7日15:23:05后的整点时刻即为1984-07-07 16:00:00.实现如下:Calenda ...
- ArrayList源码中EMPTY_ELEMENTDATA和DEFAULTCAPACITY_EMPTY_ELEMENTDATA的区别
2018年7月22日09:54:17 JDK 1.8.0_162 ArrayList源码中EMPTY_ELEMENTDATA和DEFAULTCAPACITY_EMPTY_ELEMENTDATA的区别 ...
- java中List 和 Set 的区别
a. 特性 两个接口都是继承自Collection,是常用来存放数据项的集合,主要区别如下: ① List和Set之间很重要的一个区别是是否允许重复元素的存在,在List中允许插入重复的元 ...
随机推荐
- MySQL 并行复制(MTS) 从库更新的记录不存在实际却存在
目录 背景 版本 分析 测试 背景 开了并行复制的半同步从库SQL 线程报1032错误,异步复制从库没有报错,偶尔会出现这种 版本 mysql 5.7.16 redhat 6.8 mysql> ...
- 线程&线程控制
线程基本概念: 1 线程 (1)概念:linux下没有真正的线程,所谓的线程都是通过进程的pcb模拟的,因此linux下的线程也称为“轻量级进程”,之前我们所说的进程现在看来,可以理解为:只有一个线程 ...
- [Leetcode]303.区域和检索&&304.二维区域和检索
题目 1.区域和检索: 简单题,前缀和方法 乍一看就觉得应该用前缀和来做,一个数组多次查询. 实现方法: 新建一个private数组prefix_sum[i],用来存储nums前i个数组的和, 需要找 ...
- dubbo管控台安装
1. jdk安装 # cp installpkgs/jdk-7u67-linux-x64_tar_gz /usr/local # tar -zxf jdk-7u67-linux-x64_tar_g ...
- vue教程3-06 vue路由嵌套(多层路由),路由其他信息
多层嵌套: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- 利用Warensoft Stock Service编写高频交易软件--DEMO
利用Warensoft Stock Service编写高频交易软件 无论是哪种交易软件,对于程序员来讲,最麻烦的就是去实现各种算法.本文以SAR算法的实现过程为例,为大家说明如何使用Warensoft ...
- C语言编码转换gb2312 to utf8,utf8 to gb2312 代码,GCC编译,支持Windows、Linux
编译:gcc -o f.exe f.c -liconv #include <stdio.h> #include <stdlib.h> #include <stddef.h ...
- C# 添加修改防火墙端口及程序
文章转自:http://sdfiyon.iteye.com/blog/1197511 一.添加 COM 引用 在引用里,选择 COM 页, 找到 NetFwTypeLib , 确定即可 二.添加允许通 ...
- FactoryMethod工厂方法模式(创建型模式)
1.工厂方法模式解决的问题 现在有一个抽象的游戏设施建造系统,负责构建一个现代风格和古典风格的房屋和道路. 前提:抽象变化较慢,实现变化较快(不稳定) 整个抽象的游戏设施建造系统相对变化较慢,本例中只 ...
- SQL Server性能优化(7)理解数据库文件组织
一.基本单位"页" SQL Server是用8KB的页来存储数据.物理I/O操作也是在页级执行.页的种类有很多,具体参考(MSDN).我们关注更多的是数据页的结构,包括三部 ...