gpt4 book ai didi

functional-programming - 使用函数式编程计算每个标签的出现次数

转载 作者:IT老高 更新时间:2023-10-28 13:46:50 26 4
gpt4 key购买 nike

我一直在尝试创建一个返回 Map<String, Int> 的函数键是某个标签,值是出现次数。

我需要从中提取信息的对象(简化):

class Note {
List<String> tags
}

目前的功能:

private fun extractTags(notes: List<Note>): Map<String, Int> {
return notes.map { note -> note.tags }
.groupBy { it }
.mapValues { it.value.count() }
}

现在编译器给我的返回类型不匹配 Map<(Mutable)Set<String!>!, Int>而且我不确定我是否得到了预期的结果(因为我仍然无法正确测试)。

我期待以下结果:

(tag1, 1)
(tag2, 4)
(tag3, 14)
...

最佳答案

您可以使用 Iterable#asSequence就像 Kotlin 中的 Java-8 stream-api 一样。然后使用 Sequence#flatMap将所有 tag 合并成一个 Sequence ,然后使用 Sequence#groupingBy对每个标签进行计数,例如:

private fun extractTags(notes: List<Note>): Map<String, Int> {
return notes.asSequence()
.flatMap { it.tags.asSequence() }
.groupingBy { it }.eachCount()
}

注意:两者都是 Sequence#flatMapSequence#groupingByintermediate operations ,这意味着如果 terminal operation Grouping#eachCount不叫。 Sequence 上的所有操作都没有运行。

关于functional-programming - 使用函数式编程计算每个标签的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45282778/

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