将流分组两次

时间:2017-02-07 12:10:44

标签: java java-stream

我有一个像这样的

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

,我想将此列表分组,生成一个Map<String, Map<String, Double>>,给出与此

类似的结果
[
  {
    key:"foo",
    value: [
      {
        key: "bar",
        value: 10
      },
      {
        key: "bar2",
        value: 8
      }
    ]
  }
]

之后,内部值将是数组中第三列的总和。

我自己尝试这样做,我想出了以下代码:

 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指责错误,我该怎么办?

编辑: 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>>>)

1 个答案:

答案 0 :(得分:0)

问题是getHeaders(),应该是getResults()。我想我需要一杯咖啡,谢谢你的回答