У меня есть коллекция строковых массивов, глядя, как этотГруппировка Потока дважды
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>>>)
Что это за ошибка? –
Верьте IntelliJ. Сообщение об ошибке, которое вы получите; возможно, это будет яснее. Твой пример трудно для меня. Это может объяснить, почему у вас проблемы. – duffymo
Кроме того, почему у вас есть parallelStream на SqlResult.Headers? Есть ли на самом деле такое огромное количество заголовков, что разумно инициализировать всю параллельную обработку, чтобы вычислить сумму двойного? –