2017-02-07 4 views
0

У меня есть коллекция строковых массивов, глядя, как этотГруппировка Потока дважды

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>>>)

+0

Что это за ошибка? –

+0

Верьте IntelliJ. Сообщение об ошибке, которое вы получите; возможно, это будет яснее. Твой пример трудно для меня. Это может объяснить, почему у вас проблемы. – duffymo

+1

Кроме того, почему у вас есть parallelStream на SqlResult.Headers? Есть ли на самом деле такое огромное количество заголовков, что разумно инициализировать всю параллельную обработку, чтобы вычислить сумму двойного? –

ответ

0

Проблема заключалась в том, что getHeaders(), должны быть getResults(). Я думаю, мне нужна чашка кофе, спасибо за ответы

 Смежные вопросы

  • Нет связанных вопросов^_^