gpt4 book ai didi

Kotlin 使用 groupingBy 和聚合求和

转载 作者:行者123 更新时间:2023-12-01 13:20:31 25 4
gpt4 key购买 nike

tl/dr:Kotlin 如何使用 groupingBy 和聚合来获得(键,数字)对的序列以求和到计数映射?

我有 30gb 的 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())
}.

我可以过滤“东西”,这很好,因为很多东西都被丢弃了——是的,懒惰的序列。 (省略代码)

但是我需要一种懒惰的方法来获得最终的 Map(key:String to count:Int)。

我想我应该使用 groupingBy 和聚合,因为 eachCount()只会计算行数,而不是总结 matchCount,而 groupingBy 是懒惰的,而 groupBy 不是,但我们已经达到了我的知识范围。
.groupingBy { (key, _, _) ->
key
}.aggregate { (key, _, matchCount) ->
??? something with matchCount ???
}

最佳答案

您可以使用 Grouping.fold扩展名而不是 Grouping.aggregate .它更适合按特定属性汇总分组条目:

triples
.groupingBy { (key, _, _) -> key }
.fold(0) { acc, (_, _, matchCount) -> acc + matchCount }

关于Kotlin 使用 groupingBy 和聚合求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50182682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com