Функция sortBy с разделением - PullRequest
1 голос
/ 09 марта 2019

У меня есть этот код:

fun main(args:Array<String>){
   var a = "eat,animal,banana"
   var a1 = a.split(",")
   a1.sortBy{z.toCharArray().count() { z == 'a' } }
}

Но код не работает, хотя a1 - ArrayList ... Так что я не понимаю, почему он не работает ...

Я получаю ошибку: (19, 22) Kotlin: Unresolved reference: a1

Не могли бы вы мне помочь, пожалуйста?

Спасибо!

Ответы [ 2 ]

1 голос
/ 09 марта 2019

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' } }
0 голосов
/ 09 марта 2019

Ошибка указывает на sortBy , потому что split () возвращает List , и для нет метода sortBy Список объект.
Вы должны создать MutableList следующим образом:

var a1 = a.split(",").toMutableList()

, а затем еще одной ошибкой является использование неопределенного z вместо неявного параметра it внутри лямбды,
так что измени на это:

a1.sortBy{ it.toCharArray().count { it == 'a' } }

Вы могли бы использовать z, если бы вы определили его как лямбда-параметр следующим образом:

a1.sortBy{ z -> z.toCharArray().count { z -> z == 'a' } }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...