java - java - 如何在java中使用可变参数加入多个列表?
问题描述
我想加入几个列表使用Stream API
。
我在 stackoverflow 找到了一个有用的例子:
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]
好的。但就我而言,我无法确定使用这个 Stream.of() 的列表有多少。
我想过在 jdk8 上使用可变参数。像这样
public List<Integer> getNewList(List... list) {
List<Integer> newList =
Stream.of(list)
.flatMap(Collection::stream)
.collect(Collectors.toList());
return newList;
}
getNewList(list1, list2, list3, list...)
不幸的是,它没有很好地工作。有没有办法使这项工作?
解决方案
您应该指定List
您作为 var args 传递的参数的类型,您也可以使用Arrays.stream
而不是Stream.of
public static List<Integer> getNewList(List<Integer>... list){
return Arrays.stream(list)
.flatMap(List::stream)
.collect(Collectors.toList());
}
推荐阅读
- x86 - MSI-X 如何触发中断处理程序?是否需要轮询选择的内存地址?
- javascript - 如何返回一个总数的数组 - 减少函数 - Javascript
- python - 有没有办法轻松地将数据从 python/flask 应用程序传递到 node.js 应用程序?
- router - 允许来自网络的 ssh -“无法解析主机名”
- python - 有条件地将列表拆分为 2 个子列表,支持连续传递
- asp.net - 停止应用程序池时,哪些超时控制工作进程关闭
- visual-studio-code - vs 代码 - 无法格式化嵌入式语言
- c# - 获取 c# 的碰撞形状的高度(不是 gdscript)
- html - 是否可以为 html 页面内的链接创建条件逻辑
- ruby - Lambda ArgumentError:找不到登录名——扩展“~”