2016-10-31 11 views
0

私は別のコレクションを介してその機能を適用したいSet<>を返す関数は、以下の平坦化Set<>作成するだけの変数を持つマップでコードスニペットはJavaの8 - ストリーム上flatMapすることができません

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

と改名され持っています私はflatMap

と同じ文を回してみたときに ForecastService戻っ Set<Forecast>ので、上記の文は Set<Set<Forecast>>

を返します。 Set<Forecast>は、任意の助けに感謝 Stream<? extends R>

に適合するように

私はコンパイルエラー

にタイプ変数Rのインスタンスを取得していないが存在します。

+3

flatMapコールでは、SetではなくStreamが必要です。 'p - > forecastService.forecast(p、timeLineInYear、label).stream()'を試してください。 –

答えて

0

あなたは間違っています。 flatMapメソッドはストリーム - >ストリームのストリームを変換します。セットのセットにすべての要素を累積したい場合は、stream.reduce()を使用してください。

+0

フラットマップはコレクションを平らにし、コレクションを単一の要素に減らす、スカラーコレクションが行うこととはまったく反対です。あなたはreduceがまだ動いているかもしれないとあなたが示唆したものを見ることができますが、それはまだまだ回避策です –

関連する問題