在Java8 map中使用一个函数

时间:2016-09-02 01:16:47

标签: java java-8

是否存在编写以下内容的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来查找学生/教室。

1 个答案:

答案 0 :(得分:3)

你几乎已经找到了解决方案,你非常接近:

List<Foo> results = rows.stream().map(row ->
  rowToFooFunction(classroomLookup.get(row.getId()), studentLookup.get(row.getId())).apply(row))
).collect(Collectors.toList());