2017-02-07 3 views
0

私はこのストリームをグループ化すると、二回

new ArrayList<>().addAll(
    Arrays.asList(
     new String[]{"foo","bar", "5"}, 
     new String[]{"foo", "bar2", "8"}, 
     new String[]{"foo", "bar", "5"} 
    ) 
); 

のように見える文字列配列のコレクションを持っている、と私はグループにその後、この

[ 
    { 
    key:"foo", 
    value: [ 
     { 
     key: "bar", 
     value: 10 
     }, 
     { 
     key: "bar2", 
     value: 8 
     } 
    ] 
    } 
] 

と同様の結果を与えるMap<String, Map<String, Double>>を生産、このリストが欲しいです内部値は配列の3番目の列の合計になります。自分でこれを実行しようとすると

は、私は次のコードを思い付いてきました:

Function<String[], String> teste = (row -> row[finalCategoriaColumnIndex]); 
Function<String[], String> teste2 = (row -> row[3]); 
ToDoubleFunction<String[]> teste3 = (row -> (row -> Double.parseDouble(row[finalValorColumnIndex])); 



sqlResult 
    .getResults() 
    .parallelStream() 
    .collect(Collectors.groupingBy(
     teste, 
     Collectors.groupingBy(
      teste2, 
      Collectors.summingDouble(teste3) 
     ) 
    )); 

しかし、IntelliJのは、私が何を行うことができ、エラーを非難しますか?

EDIT: IntelliJのエラー (java.util.stream.Collector<? super java.lang.String,A,R>) in Stream cannot be applied to (java.util.stream.Collector<java.lang.String[],capture<?>,java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Double>>>)

+0

何がエラーですか? –

+0

Believe IntelliJ。あなたが得るエラーメッセージを投稿してください。おそらくそれはより明確になります。あなたの例は私のために追いつくのは難しいです。それはなぜあなたが問題を抱えているのかを説明します。 – duffymo

+1

また、なぜSqlResult.HeadersにparallelStreamがあるのですか?実際にこのような膨大な量のヘッダーが存在し、2倍の合計を計算するために並列処理ハーネス全体を初期化することは妥当ですか? –

答えて

0

問題は、(getHeadersた)、()getResultsであるべきです。私はコップのカップが必要だと思う、答えをありがとう