gpt4 book ai didi

hashmap - Kotlin:查找集合中最常见的元素

转载 作者:行者123 更新时间:2023-12-02 11:48:35 25 4
gpt4 key购买 nike

我正在编写一个遍历集合并找到其中最常见项目的函数。

到目前为止,这里是我要获取的值并添加它们出现在集合中的次数的功能。我将值作为键放入映射中,并将其出现的次数作为其值。

fun mostCommon(input: Collection<Int>): Set<Int> {
var newMap: MutableMap<Int, Int> = HashMap()
for (item in input) {
if (newMap.containsKey(item)) {
//TODO: add 1 to value if key is found
}else {
newMap.put(item, 1)
}
}
return emptySet()
}

如果键已经存在,我很难找到一种将其值加1的方法。

我尝试这样做:
newMap[item] +=1

但是我收到有关在Nullable接收器上不允许plusAssign(1)的错误。

最佳答案

正如您已经注意到的那样,该错误与可空性处理有关。我建议一种功能更强的方法,而不需要显式循环,而应进行简单分组:

val numbersByElement = input.groupingBy { it }.eachCount()
//gives something like this {1=3, 2=5, 3=4, 5=2, 4=1}

结果是一个Map,其中 input中的元素为键,元素的出现次数为相应的值。

现在,您可以使用 maxBy找到最常见的元素:
numbersByElement.maxBy { it.value }?.key // gives an Int?

关于hashmap - Kotlin:查找集合中最常见的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48530786/

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