JAVA中将两个列表(List)合并为一个列表

JAVA中将两个列表(List)合并为一个列表

JAVA中将两个列表(List)合并为一个列表

我是总结和简化这篇文章,再比较了add和addAll方法

https://blog.csdn.net/cunchi4221/article/details/107470693?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2.pc_relevant_default&utm_relevant_index=4

1.方法一:使用addAll()方法,由于addAll()方法本身就是合并集合的,因此非常简单和方便。例如:

public class Main {

public static void main(String[] args) {

List list1 = new ArrayList<>();

List list2 = new ArrayList<>();

list1.add(1);

list1.add(2);

list1.add(3);

list1.add(4);

list2.add(5);

list2.add(6);

list2.add(7);

list2.add(8);

List list = new ArrayList<>();

list.addAll(list1);

list.addAll(list2);

System.out.println(list1);

System.out.println(list2);

System.out.println(list);

}

}

输出:

[1, 2, 3, 4]

[5, 6, 7, 8]

[1, 2, 3, 4, 5, 6, 7, 8]

Process finished with exit code 0

2.方法二,通过遍历集合中的元素,并在遍历的过程中完成添加操作。例如:

public class Main {

public static void main(String[] args) {

List list1 = new ArrayList<>();

List list2 = new ArrayList<>();

list1.add(1);

list1.add(2);

list1.add(3);

list1.add(4);

list2.add(5);

list2.add(6);

list2.add(7);

list2.add(8);

List list = new ArrayList<>();

for(int i:list1){

list.add(i);

}

for(int i:list2){

list.add(i);

}

System.out.println(list1);

System.out.println(list2);

System.out.println(list);

}

}

输出:

[1, 2, 3, 4]

[5, 6, 7, 8]

[1, 2, 3, 4, 5, 6, 7, 8]

Process finished with exit code 0

可以看到结果是一样的。PS:遍历的方法可以使用迭代器等,不一定仅限于for。

现在来简单比较一下运行时间:

使用addAll()方法:

public class Main {

public static void main(String[] args) {

List list1 = new ArrayList<>();

List list2 = new ArrayList<>();

for (int i = 0; i < 1000000; i++) {

list1.add(i);

list2.add(i);

}

List list = new ArrayList<>();

//获取当前系统时间

long startTime = System.currentTimeMillis();

// for(int i:list1){

// list.add(i);

// }

// for(int i:list2){

// list.add(i);

// }

list.addAll(list1);

list.addAll(list2);

long endTime = System.currentTimeMillis();

System.out.println(endTime-startTime);

}

}

输出:

10

Process finished with exit code 0

使用遍历的方式:

public class Main {

public static void main(String[] args) {

List list1 = new ArrayList<>();

List list2 = new ArrayList<>();

for (int i = 0; i < 1000000; i++) {

list1.add(i);

list2.add(i);

}

List list = new ArrayList<>();

//获取当前系统时间

long startTime = System.currentTimeMillis();

for(int i:list1){

list.add(i);

}

for(int i:list2){

list.add(i);

}

// list.addAll(list1);

// list.addAll(list2);

long endTime = System.currentTimeMillis();

System.out.println(endTime-startTime);

}

}

输出:

111

Process finished with exit code 0

可以看到,直接调用addAll()方法效率要高的多。

最后,比较一下add()和addAll()方法,其实很好理解,add只是添加一个对象元素,addAll()是将一个指定的集合添加至当前集合尾部。但如果add也是添加一个列表呢,答案是只是将这个列表的指引添加进去,只算一个元素,看这个示例就一下子清楚了:

public class Main {

public static void main(String[] args) {

List list1 = new ArrayList();

List list2 = new ArrayList();

list1.add(1);

list1.add(2);

list1.add(3);

list1.add(4);

list2.add(5);

list2.add(6);

list2.add(7);

list2.add(8);

//调用add函数添加一个对象

list1.add(list2);

//调用addAll函数添加一个列表

// list1.addAll(list2);

System.out.println(list1.size());

}

}

输出:

5

Process finished with exit code 0

调用addAll()方法

public class Main {

public static void main(String[] args) {

List list1 = new ArrayList();

List list2 = new ArrayList();

list1.add(1);

list1.add(2);

list1.add(3);

list1.add(4);

list2.add(5);

list2.add(6);

list2.add(7);

list2.add(8);

//调用add函数添加一个对象

// list1.add(list2);

//调用addAll函数添加一个列表

list1.addAll(list2);

System.out.println(list1.size());

}

}

输出:

8

Process finished with exit code 0

可以看到,add()方法只是简单地将列表的指引添加进去了

相关拼贴

365日博登录 盘点那些 80 后收藏的游戏珍品
365bet足球正网平台 2022卡塔尔世界杯战靴观察 VOL.6