如何在函数中返回带有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
}