les*_*nar 0 java java-8 java-stream
我想用Streams来实现以下目的:
我有完整不同结构的列表Input和Output对象.
使用for循环,我可以将a转换List<Input>为a List<Output>,如下所示:
for (Input input : listOfInput) {
Output currentOutPutInstance = new Output();
currentOutPutInstance.setArg1(input.getArg2());
currentOutPutInstance.setArg2(input.getArg7());
listOfOutPuts.add(currentOutPutInstance);
}
Run Code Online (Sandbox Code Playgroud)
有了溪流,我试过这样的事情:
private List<Output> getOutPutListFromInputList(List<Input> inPutList) {
List<Output> outPutList = new ArrayList<Output>();
outPutList = listOfPoolsInRun.stream.filter(<Somehow converting the input into output>)
.collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)
注意: 我不确定Stream我应该使用哪种方法.我filter只是用来显示一些虚拟代码.
使用map()来变换Stream<Input>到Stream<Output>:
private List<Output> getOutPutListFromInputList(List<Input> inPutList)
{
return listOfPoolsInRun.stream()
.map(input -> {
Output out = new Output();
out.setArg1(input.getArg2());
out.setArg2(input.getArg7());
return out;
})
.collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)
如果你在Output类中有适当的构造函数,这可以缩短:
private List<Output> getOutPutListFromInputList(List<Input> inPutList)
{
return listOfPoolsInRun.stream()
.map(input -> new Output(input.getArg2(),input.getArg7()))
.collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)