如何在函数中返回带有list参数的MutableMap(HashMap),以查找列表中每个元素的频率(Kotlin) fun main(){ val list=listOf(“B”、“A”、“A”、“C”、“B”、“A”) 打印(findfrequency(列表)) } 有趣的查找频率(列表:T):可变映射{ val frequencyMap:MutableMap=HashMap() 适用于(列表中的){ 变量计数=频率映射[s] 如果(计数=null)计数=0 frequencyMap[s]=计数+1 } 返回频率映射 }

如何在函数中返回带有list参数的MutableMap(HashMap),以查找列表中每个元素的频率(Kotlin) fun main(){ val list=listOf(“B”、“A”、“A”、“C”、“B”、“A”) 打印(findfrequency(列表)) } 有趣的查找频率(列表:T):可变映射{ val frequencyMap:MutableMap=HashMap() 适用于(列表中的){ 变量计数=频率映射[s] 如果(计数=null)计数=0 frequencyMap[s]=计数+1 } 返回频率映射 },list,kotlin,generics,hashmap,mutablemap,List,Kotlin,Generics,Hashmap,Mutablemap,解决方案:不需要变量列表的泛型类型声明,只需在函数参数中添加。 以下是最后一个节目: fun main() { val list = listOf("B", "A", "A", "C", "B", "A") print(findfrequency(list)) } fun <T> findfrequency(list: T): MutableMap

解决方案:不需要变量列表的泛型类型声明,只需在函数参数中添加
。 以下是最后一个节目:

fun main() {
    val list = listOf("B", "A", "A", "C", "B", "A")
    print(findfrequency(list))
}

fun <T> findfrequency(list: T): MutableMap<String, Int> {
    val frequencyMap: MutableMap<String, Int> = HashMap()
 
    for (s in list) {
        var count = frequencyMap[s]
        if (count == null) count = 0
        frequencyMap[s] = count + 1
    }
    
    return frequencyMap
}
fun main(){
val list_String=listOf(“B”、“A”、“A”、“C”、“B”、“A”)
println(findfreq(列表字符串))
}
funfindfreq(list:list):可变映射{
val frequencyMap:MutableMap=HashMap()
对于(列表中的i){
var计数=频率映射[i]
如果(计数=null)计数=0
frequencyMap[i]=计数+1
}
返回频率映射
}

当您将字符串列表放入类型为T的函数时,其类型在运行时是未知的,并且您正试图迭代此未知类型。因此,必须指明此对象可用于与交互

fun main() {
    val list_String = listOf("B", "A", "A", "C", "B", "A")
    println(findfreq(list_String))
}

fun findfreq(list: List<String>): MutableMap<String, Int> {
    val frequencyMap: MutableMap<String, Int> = HashMap()
    
    for(i in list) {
        var count = frequencyMap[i]
        if(count == null) count = 0
        frequencyMap[i] = count + 1
    }
    
    return frequencyMap
}
fun main(){
val list=listOf(“B”、“A”、“A”、“C”、“B”、“A”)
打印(findfrequency(列表))
}
有趣的查找频率(列表:T):可变映射{
val frequencyMap:MutableMap=HashMap()
适用于(列表中的){
变量计数=频率映射[s]
如果(计数=null)计数=0
frequencyMap[s]=计数+1
}
返回频率映射
}
在下面的示例中,我们不再像上面那样依赖字符串类型。但是,在输出时,我们将得到一个这种类型的映射

fun main() {
    val list = listOf("B", "A", "A", "C", "B", "A")
    print(findfrequency(list))
}

fun <T : Iterable<String>> findfrequency(list: T): MutableMap<String, Int> {
    val frequencyMap: MutableMap<String, Int> = HashMap()

    for (s in list) {
        var count = frequencyMap[s]
        if (count == null) count = 0
        frequencyMap[s] = count + 1
    }

    return frequencyMap
}
fun findfrequency(列表:T):可变映射{
val frequencyMap:MutableMap=HashMap()
适用于(列表中的){
变量计数=频率映射[s]
如果(计数=null)计数=0
frequencyMap[s]=计数+1
}
返回频率映射
}

为什么
list
中的
findfrequency
参数属于泛型类型T而不是显式类型
list
?另外,为什么需要返回可变映射?简单的解决方案是
list.groupingBy{it}.eachCount()
Thankyou@sidGate您能将实际代码添加到答案中吗?外部链接可能会断开。
fun <T : Iterable<S>, S> findfrequency(list: T): MutableMap<S, Int> {
    val frequencyMap: MutableMap<S, Int> = HashMap()

    for (s in list) {
        var count = frequencyMap[s]
        if (count == null) count = 0
        frequencyMap[s] = count + 1
    }

    return frequencyMap
}