如果我想在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
并创建它自己的列表,其中包含所有条目的副本,这对我来说似乎也不理想。那我能做什么呢
5条答案
按热度按时间rpppsulh1#
Java 8有一个简单的方法,可以在下面代码中显示的Stream API的帮助下完成。我们基本上已经创建了一个包含所有列表的流,然后因为我们需要列表的各个内容,所以需要用
flatMap
将其展平,最后收集List
中的元素。mfpqipee2#
添加其他备选方案:
选项1:
选项二:
eqqqjvef3#
使用ArrayList列出所有列表....
这就是你的名单将作出
k4emjkb14#
您可以编写自己的方法来合并两个或多个列表。示例:
f2uvfpb95#
如果连接多个列表或大型列表,源列表有一个高效的
toArray()
实现,目标列表有一种方法来请求显式的大小,以及一个高效的addAll()
实现,你可以比一个简单的toList()
保存很多时间。ArrayList
可能是最常用的List,它具有所有这三个特性。调用sized
ArrayList
构造函数执行单个分配,使用addAll()
消除了每次将一个元素低效地复制到目标List中的需要。