Kotlin toMap коллектор с дубликатами ключей - PullRequest
2 голосов
/ 07 апреля 2020

Я ищу Kotlin аналог для Java потокового коллектора Collectors.toMap с параметром mergeFunction.

Например, в Java для подсчета символов в String можно использовать следующий фрагмент кода:

Map<Character, Integer> charsMap = s2.chars()
            .mapToObj(c -> (char) c)
            .collect(Collectors.toMap(Function.identity(), s -> 1, Integer::sum));

Если мы конвертируем фрагмент Java в Kotlin это выглядит довольно некрасиво из-за явного использования типов.

private fun countCharsV2(word: String): Map<Char, Int> {
    return word.chars()
        .mapToObj { it.toChar() }
        .collect(
            Collectors.toMap(
                Function.identity(),
                Function { 1 },
                BinaryOperator { a: Int, b: Int -> Integer.sum(a, b) }
            )
        )
}

Существует ли сборщик Kotlin с похожим поведением?

...