在Java中合并多个列表

如果要在Java中将两个列表合并为一个,可以使用ListUtils.union(List list1,List

list2)。但是,如果我想合并多个列表怎么办?

这有效:

import org.apache.commons.collections.ListUtils;

List<Integer>list1=Arrays.asList(1,2,3);

List<Integer>list2=Arrays.asList(4,5,6);

List<Integer>list3=Arrays.asList(7,8,9);

List<Integer>list4=Arrays.asList(10,0,-1);

System.out.println(ListUtils.union(ListUtils.union(list1, list2),ListUtils.union(list3, list4)));

但这似乎并不是最好的解决方案,阅读起来也不是特别好。可悲的是ListUtils.union(list1,list2,list3,list4)不起作用。addAll对于我来说,多次使用并为所有条目重复创建自己的列表似乎也不理想。那我该怎么办呢?

回答:

借助下面的代码中所示的Stream

API,

Java

8可以轻松实现这一目标。我们基本上已经创建了一个包含所有列表的流,然后,由于我们需要列表的各个内容,因此有必要将其展平flatMap并最终将元素收集到中List

List<Integer>list1=Arrays.asList(1,2,3);

List<Integer>list2=Arrays.asList(4,5,6);

List<Integer>list3=Arrays.asList(7,8,9);

List<Integer>list4=Arrays.asList(10,0,-1);

List<Integer> newList = Stream.of(list1, list2, list3,list4)

.flatMap(Collection::stream)

.collect(Collectors.toList());

System.out.println(newList); // prints [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, -1]

以上是 在Java中合并多个列表 的全部内容, 来源链接: utcz.com/qa/404175.html

回到顶部