我有一个List<Foo>
:foos
。我有两种返回Bar
的方法:Bar doThingOne(Foo foo)
和Bar doThingTwo(Foo foo)
。我想以两个List<Bar>
结尾–一个通过迭代foos
并将doThingOne()
应用于每个Foo
,另一个通过做同样的事情但使用{{ 1}}。是否可以执行此操作而无需遍历doThingTwo()
两次?
答案 0 :(得分:4)
这不是您想要的吗?很简单,我对此有些怀疑。
List<Bar> lb1 = new ArrayList<Bar>();
List<Bar> lb2 = new ArrayList<Bar>();
for (Foo f : foos) {
lb1.add(doThingOne(f));
lb2.add(doThingTwo(f));
}
答案 1 :(得分:0)
您可以使用stream来完成此操作:
List<Bar> barList1 = new ArrayList<>();
List<Bar> barList2 = fooList.stream().peek(f -> barList1.add(doThingOne(f))
.map(f -> doThingTwo(f)).collect(Collectors.toList());