Java 集合之List 集合的添加方法顺序分析以及add和addAll区别
来源:互联网 发布:捷联惯导速度算法 编辑:程序博客网 时间:2024/06/14 10:47
本篇主要探讨论证以下两个问题:
一、List集合有一个特点就是元素有序,即元素的存入顺序与其取出顺序一致。
二、List集合的添加方法主要有add()和addAll()。那两者的区别在哪呢
add()是将传入的的参数作为当前 List 中d的一个项目(Item)来存储,即使你传入一个 list 也只会另当前的List集合增加 1 个元素。
addAll()是传入一个List,将此前List集合中的所有元素加入到当前的 List 中,当前 List 集合会增加的元素个数是传入的 List 的大小
一、这里举例 向 ArrayList集合中加入一些元素。观察 list 在重复位置添加元素,最后的结果如何。
public class TestList{ public static void main(String args[]){ // 结果为 Hello Java Learn World List list = new ArrayList(); // 因为 List集合输出有序且不重复 list.add("Hello"); list.add("World"); list.add(1,"Learn"); list.add(1,"Java"); printList(list); } public static void printList(List list){ //printList()输出方法 传入List对象 //1 System.out.println("集合结果输出:"); for(int i = 0; i< list.size();i++) { System.out.print(list.get(i)+" "); } }}
观察添加元素的代码块:
list.add("Hello"); // 1 list.add("World"); // 2 list.add(1,"Learn"); // 3 list.add(1,"Java"); // 4
这里注意,1、2处代码分别在集合的第一位和第二位加入了Hello 和World,
3 处代码在索引为1 的位置加入了Learn,此时加入顺序变成了 Hello、Learn、World
同理,4 处代码又在当前集合中索引为 1 的位置加入了 Java。
最后之前元素向后推移。输出结果为 :Hello Java Learn World
结论:可以发现存入顺序与取出顺序一致,且若采用无下标的添加方法,后加入的元素是在当前 List 集合的末尾添加。
若采用带下标添加,则下标后的元素依次后移。顺序不变。
二、本例中在上边类的基础上加入一个新的list集合,定义为 list2。
将list 集合中的元素分别用 add()和addAll()方法加入到list2 的集合中。并分别输出结果,返回其长度。
add()方法分析:
对于集合的添加方法 add(),有两种方式。
一种是 直接写要加入的元素对象,另一种是前边写上下标位置,后边写元素对象。
语法 1 add(Object element )
public class TestList{ public static void main(String args[]){ // 结果为 Hello Java Learn World List list = new ArrayList(); // 因为 List集合输出有序且不重复 list.add("Hello"); list.add("World"); list.add(1,"Learn"); list.add(1,"Java"); printList(list); // 输出 list 集合的遍历结果 ArrayList list2 = new ArrayList(); //新定义一个list2 集合对象 //测试区,这是开始位置, list2.add(list); // 这是结束位置,以下代码块将在此处进行代入 printList2(list2); // 输出 list2 集合的遍历结果 } public static void printList(List list){ //printList()输出方法 传入list对象 System.out.println("list 循环输出:"); for(int i = 0; i< list.size();i++) { System.out.print(list.get(i)+" "); } System.out.println(); } public static void printList2(List list2) { //printList2()输出方法 传入list2对象 System.out.println("\nlist2 循环输出:"); for (int i = 0; i < list2.size(); i++) { System.out.print(list2.get(i) + " "); } System.out.println("\nlist2集合的长度为:"+list2.size()); }}
1、上例中 采用的是 add( ) 方法将list 对象加入其中 list2 中,测试区代码即为上例中代码
list2.add(list);
输出结果为:
语法 2 add(int index , Object element) 将元素 element 插入到List集合中 index 处
2、若是采用 下标方式的add()方法进行添加,当前list2 集合中代码为空。我们先在list2 中加入两个元素。
再在下标为 1 的位置添加进 list 对象
测试区代码为
list2.add("One");//先后插入两个元素 list2.add("Two"); list2.add(1,list);
可以观察出 通过下标添加方法将 list集合对象添加到了下标为0 的One 元素的后边。即当前list对象在list2中下标为1.添加成功
由上边两个例子可以看出 add()方法传入的 list 只会给当前 list 中增加 1 个元素
即传入的参数被当中一个元素来处理了 ,会以数组形式显示。
----------------------------
接下来是addAll()方法
addAll()方法用于将指定collection中的所有元素添加到列表尾部。
语法1 addAll ( Collection c )
测试区代码为
list2.addAll(list);
输出结果为:
语法2 addAll ( int index , Collection c ) 将集合 c 所包含的元素插入到 list集合的 index 处
index:用于指定collection 的第一个元素所插入索引的位置
c:用于指定要将全部元素添加到列表中的collection
测试区代码为:
list2.add("One"); list2.add("Two"); list2.addAll(1,list);
由上边两个例子可以看出
addAll()方法传入的 list 会给当前 list 中增加 与传入的 list 相同个数的元素,结果不会以数组形式显示。
- Java 集合之List 集合的添加方法顺序分析以及add和addAll区别
- Java 集合之List 集合的删除方法顺序分析以及remove和removeAll区别
- List 中添加多个List集合以及add() 与addAll()的区别
- List 中添加多个List集合以及add() 与addAll()的区别
- List 中添加多个List集合以及add() 与addAll()的区别
- List 中添加多个List集合以及add() 与addAll()的区别
- List集合以及add() 与addAll()的区别
- List 的 add 和 addAll 方法的区别
- java中list的add与addall方法区别
- 关于List的add方法与addAll方法的区别
- List的add方法与addAll方法的区别
- List的add方法与addAll方法的区别
- 关于List的add方法与addAll方法的区别
- List的add方法与addAll方法的区别
- List的add方法与addAll方法的区别
- Java list add方法和addAll方法效率
- list的add和addAll的不同区别
- List和set集合:交集、差集、合集的区别retainAll,removeAll、addAll
- 理解一致性哈希算法(consistent hashing)
- pandas入门
- (自用对各位没有价值)Java存储过程
- 模块
- Android手机连接到TOmcat服务器
- Java 集合之List 集合的添加方法顺序分析以及add和addAll区别
- 设置eclipse中xml的默认编辑器、行数、xsd和dtd
- UVALIVE 3523 双连通分量+二分图染色
- liunx下编译安装LNMP环境
- SpringBoot+Junit Test
- QT事件处理(二) 之 事件过滤器
- BZOJ 1787: [Ahoi2008]Meet 紧急集合/1832: [AHOI2008]聚会 LCA
- SQL优化总结
- eclipse打开xml文件都显示为灰色