2017-01-12 9 views
1

私は奇妙な状況に陥っています。とにかくリストを同じ値のマップにストリーミングする必要はありますか?Java 8 Stream同じ値のマップに一覧表示

すなわち

のはbaのキーに対応する整数のリストだけで言わせaがタイプであることMap< Integer, List<String> >

をしましょう。

b.stream().map(x -> 
    a.get(x).stream() 
     .collect(
      Collectors.toMap(i -> i, x); 
     ) 
); 

私はすべての値がxであり、すべてのキーがbの値からあるマップが欲しいです。 toMap方法で

上記機能はStream< List< Map< String, Int > > >を返すようになっている(明らかにそれが機能しない)

+0

あなたは、サンプルの入力データと出力データを表示することができますか? – shmosel

+1

あなたの投稿されたコードはマップのストリームを生成し、各マップはすべてのキーを単一の値にマッピングします。なぜあなたがそれを望んでいるのか、そのリストがどこに来るのかはわかりません。 – shmosel

+2

'toMap'の2番目の値は' Collectors.toMap(i - > i、i - > x) 'である必要があります。 – flakes

答えて

2

第2の値はもラムダする必要がある(すなわち、それは、インターフェイスFunction<? super T, ? extends U>を満たす必要がありますTbストリーム内のオブジェクトの種類であるとUは、結果のマップ内の値のタイプである)場所:

Map<Integer, List<String>> a = ... 
List<Integer> b = ... 
Stream<Map<String, Integer>> c = b.stream().map(x -> 
     a.get(x).stream() 
       .collect(Collectors.toMap(i -> i, i -> x))); 
関連する問題