tl / dr: Как бы Котлин использовал groupingBy и агрегат, чтобы получить последовательность пар (ключ, число) для суммирования с картой отсчетов?
У меня есть 30 ГБ CSV-файлов, которые легко читать и анализировать.
File("data").walk().filter { it.isFile }.flatMap { file ->
println(file.toString())
file.inputStream().bufferedReader().lineSequence()
}. // now I have lines
Каждая строка - это «key, extraStuff, matchCount»
.map { line ->
val (key, stuff, matchCount) = line.split(",")
Triple(key, stuff, matchCount.toInt())
}.
и я могу отфильтровать «материал», который хорош, потому что лоты сбрасываются - ага, ленивые последовательности. (код опущен)
Но тогда мне нужен ленивый способ получить окончательную Карту (ключ: String to count: Int).
I думаю Я должен был бы использовать groupingBy и aggregate, потому что eachCount()
будет просто считать строки, а не суммировать matchCount, а groupingBy будет ленивым, тогда как groupBy нет, но мы достигли конца мои знания.
.groupingBy { (key, _, _) ->
key
}.aggregate { (key, _, matchCount) ->
??? something with matchCount ???
}