【发布时间】:2016-10-31 05:30:00
【问题描述】:
有一个返回Set<> 的函数我想将该函数应用于另一个集合,创建一个扁平化Set<> 下面是代码sn-p,其中仅重命名了变量的映射
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>
感谢任何帮助。
【问题讨论】:
-
flatMap 调用需要的是 Stream,而不是 Set。试试
p -> forecastService.forecast(p, timeLineInYear, label).stream()。
标签: java-8 java-stream