您的位置:

Java集合合并

一、合并两个List集合

1、使用addAll方法进行合并


List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3));
List<Integer> list2 = new ArrayList<>(Arrays.asList(4, 5, 6));
list1.addAll(list2);

使用addAll方法可以将一个集合的所有元素添加到另一个集合中,从而实现合并。以上代码将list2中的所有元素添加到list1中,从而实现两个List集合的合并。

2、使用Java 8 Stream API进行合并


List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3));
List<Integer> list2 = new ArrayList<>(Arrays.asList(4, 5, 6));
List<Integer> mergedList = Stream.concat(list1.stream(), list2.stream()).collect(Collectors.toList());

使用Java 8中新增的Stream API可以让代码更加简洁和优雅。以上代码使用concat方法将两个List集合连接起来,然后使用collect方法将所有元素收集到一个新的List集合中,从而实现了两个List集合的合并。

二、合并多个Java集合

1、使用addAll方法进行合并


List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3));
List<Integer> list2 = new ArrayList<>(Arrays.asList(4, 5, 6));
List<Integer> list3 = new ArrayList<>(Arrays.asList(7, 8, 9));
List<Integer> mergedList = new ArrayList<>();
mergedList.addAll(list1);
mergedList.addAll(list2);
mergedList.addAll(list3);

使用addAll方法可以将多个集合的所有元素添加到一个新的集合中,从而实现合并。以上代码将list1、list2和list3中的所有元素添加到一个新的List集合中,从而实现了多个Java集合的合并。

2、使用Java 8 Stream API进行合并


List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3));
List<Integer> list2 = new ArrayList<>(Arrays.asList(4, 5, 6));
List<Integer> list3 = new ArrayList<>(Arrays.asList(7, 8, 9));
List<Integer> mergedList = Stream.of(list1, list2, list3).flatMap(Collection::stream).collect(Collectors.toList());

使用Java 8中新增的Stream API也可以很容易地实现多个Java集合的合并。以上代码使用of方法将多个集合转化为一个Stream对象,然后使用flatMap方法将所有元素放到同一个Stream中,最后使用collect方法将所有元素收集到一个新的List集合中。

三、Java集合合并优化

1、使用addAll方法进行优化

如果需要频繁地合并多个Java集合,可以在程序初始化时就创建一个新的List集合,将所有元素添加到该集合中,避免频繁地创建新的List集合和频繁地使用addAll方法。


List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3));
List<Integer> list2 = new ArrayList<>(Arrays.asList(4, 5, 6));
List<Integer> list3 = new ArrayList<>(Arrays.asList(7, 8, 9));
List<Integer> allElements = new ArrayList<>();
allElements.addAll(list1);
allElements.addAll(list2);
allElements.addAll(list3);

2、使用Java 8 Stream API进行优化

使用Java 8中的Parallel Stream API可以让集合的合并操作并行化,在多核处理器上可以提升程序的性能。


List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3));
List<Integer> list2 = new ArrayList<>(Arrays.asList(4, 5, 6));
List<Integer> list3 = new ArrayList<>(Arrays.asList(7, 8, 9));
List<Integer> mergedList = Stream.of(list1, list2, list3).parallel().flatMap(Collection::stream).collect(Collectors.toList());

在以上代码中,使用parallel方法将Stream并行化,即在多个线程上同时执行,提升了程序的性能。