[英]Java stream: Collect Stream<int[]> to List<int[]>
我试图让我的头脑围绕 Java 流。
Atm 我有这个不起作用的构造:
List<int[]> whiteLists = processes.stream()
.map(Process::getEventList)
.forEach(eventList -> eventList.stream()
.map(event -> event.getPropertie("whitelist"))
.map(propertie -> propertie.getIntArray())
.collect(Collectors.toList()));
}
层次结构是:
Process::getEventList 返回一个Event
对象列表
event.getPropertie("whitelist")
返回一个具有getIntArray()
方法的Property
对象
event.getPropertie()
给了我一个整数数组。
如何将这些数组收集到数组列表中?
谢谢!
您不能使用forEach()
因为它需要一个Consumer
,这意味着它会消耗流,但不能返回任何东西(所以没有什么可收集的)。
您需要flatMap来流式传输内部eventList
,如下所示
List<int[]> whiteLists = processes.stream()
.flatMap(p -> p.getEventList().stream())
.map(event -> event.getPropertie("whitelist"))
.map(propertie -> propertie.getIntArray())
.collect(Collectors.toList());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.