java8 stream收集不同的列表

时间:2016-06-10 14:26:06

标签: java-8 java-stream

我希望在过滤后将输入列表转换为不同的列表。请让我们知道如何在java8流中实现。

我尝试了类似下面的内容,它在collect()中的getOutput()中给出了编译错误“p无法解析为变量”。

List<Output> outputList= inputList.stream()
                    .filter(p ->  p.param1==10)                     
                    .collect(Collectors.toList(getOutput(p)));  


private Output getOutput(Input inp){
 Output out = new Output();
 out.value1= inp.value1;
 ---
 ---
}

1 个答案:

答案 0 :(得分:3)

根据评论的建议,你可以做这样的事情

List<Output> outputList= inputList.stream()
                    .filter(p ->  p.param1==10) 
                    .map(j -> getOutput(j))
                    .collect(Collectors.toList());

因此,在过滤器之后,您将对象转换为其他类型并最终收集。或者,您可以使用映射收集器将对象转换为另一种类型,然后像下面那样收集它们

List<Output> outputList= inputList.stream()
        .filter(p ->  p.param1==10) 
        .collect(Collectors.mapping(j -> getOutput(j), Collectors.toList()));