Kotlin 该函数包含一个拆分

Kotlin 该函数包含一个拆分,kotlin,Kotlin,我有以下代码: fun main(args:Array<String>){ var a = "eat,animal,banana" var a1 = a.split(",") a1.sortBy{z.toCharArray().count() { z == 'a' } } } fun main(args:Array){ var a=“吃,动物,香蕉” 变量a1=a.split(“,”) a1.sortBy{z.toCharArray().count(){z=='a

我有以下代码:

fun main(args:Array<String>){
   var a = "eat,animal,banana"
   var a1 = a.split(",")
   a1.sortBy{z.toCharArray().count() { z == 'a' } }
}
fun main(args:Array){
var a=“吃,动物,香蕉”
变量a1=a.split(“,”)
a1.sortBy{z.toCharArray().count(){z=='a'}
}
虽然a1是ArrayList,但代码不起作用。。。所以我不明白为什么它不起作用

我得到错误:
(19,22)Kotlin:未解析的引用:a1

你能帮我吗

谢谢大家!

错误指向,因为返回一个,并且没有对象的方法
您必须创建一个如下所示的

var a1 = a.split(",").toMutableList()
a1.sortBy{ z -> z.toCharArray().count { z -> z == 'a' } }
另一个错误是在lambda中使用未定义的
z
而不是隐式参数
it

因此,请改为:

a1.sortBy{ it.toCharArray().count { it == 'a' } }
如果将其定义为lambda参数,则可以使用
z
,如下所示:

var a1 = a.split(",").toMutableList()
a1.sortBy{ z -> z.toCharArray().count { z -> z == 'a' } }

sortBy
对当前列表进行排序,因此列表需要可变(可以更改)。 一个普通的列表是不可变的,这就是为什么没有
sortBy
方法的原因

您可以改为使用
sortedBy
,它返回一个新列表

制作新列表:

val a = listOf("eat","animal","banana")
val newList = a.sortedBy { word -> word.count { letter -> letter == 'a' } }
或者使列表可变并重新排序:

val a = mutableListOf("eat","animal","banana")
a.sortBy { word -> word.count { letter -> letter == 'a' } }