遍历列表一次,但返回两个列表

时间:2019-03-28 16:14:43

标签: java

我有一个List<Foo>foos。我有两种返回Bar的方法:Bar doThingOne(Foo foo)Bar doThingTwo(Foo foo)。我想以两个List<Bar>结尾–一个通过迭代foos并将doThingOne()应用于每个Foo,另一个通过做同样的事情但使用{{ 1}}。是否可以执行此操作而无需遍历doThingTwo()两次?

2 个答案:

答案 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());