У меня есть общая функция, которая принимает Collection<? extends T> ts
.
Я тоже прохожу:
Function<? extends T, ? extends K> classifier
, который сопоставляет каждый элемент T
с ключом K
(возможно наличие дубликатов)
Function<? extends T, Integer> evaluator
, который дает целое значение для элемента.
Сама функция имеет встроенный расчет ("int to int
") для каждого произведенного Integer
(может быть что-то вроде возведения в квадрат для нашего примера)
Наконец, я хотел бы суммировать все значения для каждого ключа.
Итак, конечный результат: Map<K, Integer>
.
Например,
Допустим, у нас есть список ["a","a", "bb"]
, и мы используем Function.identity
для классификации, String::length
для оценки и возведения в квадрат как встроенную функцию. Тогда возвращаемая карта будет: {"a": 2, "b": 4}
Как я могу это сделать? (Я думаю, что желательно, используя Collectors.groupingBy
)