Я ищу 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 с похожим поведением?