是否存在编写以下内容的Java8等效方法?
List<Foo> results = new ArrayList<>();
for (RowResult row : rows) {
results.add(rowToFooFunction(classroomLookup.get(row.getId()), studentLookup.get(row.getId())).apply(row));
}
rowToFooFunction就像Function<RowResult, Foo> rowToFoo (Classroom c, Student s)...
所以我想最终得到类似的东西:
rows.stream.map(rowToFooFunction...).collect(Collectors.toList());
问题是,在地图步骤中,我需要通过我迭代的行的id来查找学生/教室。
答案 0 :(得分:3)
你几乎已经找到了解决方案,你非常接近:
List<Foo> results = rows.stream().map(row ->
rowToFooFunction(classroomLookup.get(row.getId()), studentLookup.get(row.getId())).apply(row))
).collect(Collectors.toList());