java中List的addAll方法顺序

原创 2018年04月17日 15:30:31

写在前面

在写实验的时候,想将一个集合中的元素全部都添加到另一个集合中,为了不增加时间复杂度,拒绝采用迭代时一个一个添加的方法;被身边的大佬提醒,可以使用addAll方法,才恍然。但是,在列表向列表中加入元素时,加入的顺序是什么样的呢?为此做了下面的一个小测试:

试验

新建一个list列表(为了方便观察加入顺序,就简单让其存储数字的字符串形式了)向其中加入0-99这100个数字;然后继续创建要加入的列表list2,向其中加入一个元素;最后将list中的元素采用addAll的方法加入list2中,检测输出的结果顺序。代码如下:

List<String> list = new ArrayList<>();
for (int i = 0; i < 100; i++) {
    list.add(i + " ");
}
List<String> list2 = new ArrayList<>();
list2.add("a");
list2.addAll(list);
System.out.println(list2);

上述代码的输出为:

[a, 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 , 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , 62 , 63 , 64 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , 91 , 92 , 93 , 94 , 95 , 96 , 97 , 98 , 99 ]

由此可见,addAll方法加入的列表元素的顺序是按照原来的顺序向后加入的。

最后

最后总结一下:碰到一些不懂的API,与其问其他人,不如花一点时间写一个简单的测试。测试虽然简单,但记忆却更加深刻。

使用目录内容建立菜单

目的:根据目录内容,建立一个菜单。菜单项为目录中的文件和子目录(以弹出方式显示)。解决方案:遍历子目录,建立一个文件路径数组。菜单项的ID是数组的索引。当用户单击某个菜单项时,从数组中读取文件路径并执...
  • jiangsheng
  • jiangsheng
  • 2001-08-02 22:58:00
  • 2071

ArrayList的addAll方法使用注意

package com.robot.test; import java.util.ArrayList; public class TestCode { public static void ma...
  • zhuhai__yizhi
  • zhuhai__yizhi
  • 2014-11-25 23:35:34
  • 3543

Java学习笔记-List中的addAll 方法

package com.cute; import java.util.ArrayList; import java.util.List; public class ListTes...
  • u010180815
  • u010180815
  • 2016-08-14 11:09:24
  • 6482

java中list的add与addall方法区别

在做项目时我遇到过这样的问题,java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.alibaba.gette...
  • liuhuanchao
  • liuhuanchao
  • 2016-01-15 15:12:28
  • 7479

Java 集合之List 集合的添加方法顺序分析以及add和addAll区别

List集合有一个特点就是元素有序,即元素的存入顺序与其取出顺序一致。 这里举例 向 ArrayList集合中加入一些元素。 观察 list 在重复位置添加元素,最后的结果如何。 public cla...
  • AsheAndWine
  • AsheAndWine
  • 2017-05-09 15:34:23
  • 458

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

add 是将传入的参数作为当前List中的一个Item存储,即使你传入一个List也只会另当前的List增加1个元素 addAll 是传入一个List,将此List中的所有元素加入到当前List中,也...
  • andylau6789
  • andylau6789
  • 2015-08-28 19:11:17
  • 10530

Java初学习 - List中的add与addAll

add是将传入的参数作为当前List中的一个Item存储,即使你传入一个List也只会另当前的List增加1个元素addAll是传入一个List,将此List中的所有元素加入到当前List中,也就是当...
  • cnmilan
  • cnmilan
  • 2014-11-12 20:15:15
  • 7177

list的addAll方法是浅拷贝

package com.wp.test; import java.util.ArrayList; import java.util.Collections; import java.util...
  • wangpanbaoding
  • wangpanbaoding
  • 2017-02-17 17:21:48
  • 3652

Java list add方法和addAll方法效率

结论是: 在数据量较小时,add方法配合for循环遍历比addAll来得快.但是在大量数据时,addAll的方法的效率更高.list.addAll()是浅拷贝,只是将内存中的地址进行了拷贝,指向了原先...
  • u012441924
  • u012441924
  • 2017-07-06 14:05:20
  • 2171

java Arraylist.addAll方法---arraycopy

问题是这样产生的ListA 里面有  1   2    3  ListB里面有  4    5   6  让ListA变成  1  2  3  4  5  6  我觉得很简单 ,就说用for循环遍历 ...
  • sutaizi
  • sutaizi
  • 2011-07-14 22:43:52
  • 21472
收藏助手
不良信息举报
您举报文章:java中List的addAll方法顺序
举报原因:
原因补充:

(最多只允许输入30个字)