我正在尝试学习流语法,我正在努力将一些for循环转换为流。如果这不合适,请告诉我,我会删除。
基本上我有一个pojo的列表(带有嵌套的pojos),我用它来创建一个不同的pojo的新列表 (实体到模型)。
(工作)for循环就像这样
for (Pojo1 p1 : pojo1.getPojo1List())
{
List <String> stringList = new ArrayList<>();
for (Pojo2 p2 : p1.GetPojo2List())
{
stringList.add(p2.getText());
}
Pojo3 p3 = new Pojo3(p1.getMember1(), p1.getMember2(), stringList);
}
我已用流管道替换内循环
for (Pojo1 p1 : pojo1.getPojo1List())
{
List <String> stringList = p1.GetPojo2List().stream().map(Pojo2::getText).collect(Collectors.toList());
Pojo3 p3 = new Pojo3(p1.getMember1(), p1.getMember2(), stringList);
}
这是正常的。
我现在想要替换第一个循环,我正在努力找出要做到这一点的方法。我开始用这样的东西
pojo1.getPojo1List().stream().forEach(p1 -> new Pojo3(p1.getMember1(), p1.getMember2(), [stream from above])
这不起作用,但在我玩它太多之前,我发现由于foreach是终端操作员,这种方法可能是错误的,因为我无法收集我创建的pojos(?)
有人能指出我正确的方向吗?