Java 8 - 无法在流上进行flatMap

时间:2016-10-31 05:30:01

标签: java-8 java-stream

有一个返回Set<>的函数我想将该函数应用于另一个集合,在下面创建一个展平的Set<>是带有地图的代码片段,只更改了变量

 repository.findAll().stream().map(
                p -> forecastService.forecast(p, timeLineInYear, label)
        ).collect(Collectors.toSet());

ForecastService返回Set<Forecast>,因此上述语句返回Set<Set<Forecast>>

当我尝试使用flatMap

转换相同的语句时
 repository.findAll().stream().flatMap(
                p -> forecastService.forecast(p, timeLineInYear, label)
        ).collect(Collectors.toSet());

我收到编译错误

  

不存在类型变量R的实例,以便Set<Forecast>符合   Stream<? extends R>

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

你弄错了。 flatMap方法会转换您的信息流 - &gt;流。如果您想累积Set of Set中的所有元素,请考虑使用stream.reduce()