【问题标题】:How to count number of occurences of items in an array in Kotlin如何计算 Kotlin 中数组中项目的出现次数
【发布时间】:2020-11-05 06:38:49
【问题描述】:
我想在 kotlin 中计算一个数组列表。我所拥有的是类似于:
val names = listOf("apple", "apple", "orange", "orange", "banana", "pears", "grape", "apricots")
我想要的输出是这样的:
苹果:2
橙色:2
香蕉:1
梨:1
葡萄:1个
杏子:1个
你能帮帮我吗,谢谢
【问题讨论】:
标签:
android
kotlin
intellij-idea
【解决方案1】:
使用eachCount 和groupingBy 也可能是一个很好的解决方案。
例如:
val names = listOf("apple", "apple", "orange", "orange", "banana", "pears", "grape", "apricots")
val frequencies = names.groupingBy { it }.eachCount()
print(frequencies)
//{apple=2, orange=2, banana=1, pears=1, grape=1, apricots=1}
【解决方案2】:
您可以使用 HashMap 来计算 ArrayList 中每个单词的出现次数。
val names = listOf("apple", "apple", "orange", "orange", "banana", "pears", "grape", "apricots")
val frequencyMap: MutableMap<String, Int> = HashMap()
for (s in names) {
var count = frequencyMap[s]
if (count == null) count = 0
frequencyMap[s] = count + 1
}
println(frequencyMap)
【解决方案3】:
使用这个:
val names = listOf("apple", "apple", "orange", "orange", "banana", "pears", "grape", "apricots")
val output = names.groupBy { it }
.map { "${it.key} : ${it.value.size}" }
.toString()
print(output)
【解决方案4】:
您可以使用 groupingBy 和 eachcount,
如果你想检查你可以使用 groupby 之后你可以打印
val count = names.groupingBy { it }.eachCount()
println(count)