Возможно, мне что-то здесь не хватает, но похоже, что sort не сортирует массив полностью.
Вот что я пробовал:
$ kotlinc
Welcome to Kotlin version 1.2.71 (JRE 10.0.2+13-Ubuntu-1ubuntu0.18.04.2)
Type :help for help, :quit for quit
>>> var test: String = "This is a test of the user system."
>>> var testarray2: Array<String> = test.split(" ").toTypedArray()
>>> testarray2.sort()
>>> testarray2.forEach { println("${it} ") }
This
a
is
of
system.
test
the
user
>>>
Как видите, сортировка не похожа на сортировку строки «Это».
Я попытался установить openjdk-11 и обновить все свои пакеты, но я все еще получаю это, и я проверил, что 1.2.71 - это последний пакет Kotlin.
Я делаю что-то неправильно?
Заранее спасибо.
если вы выполните такую сортировку:
testarray2.sortBy { it.toLowerCase() }
он будет отсортирован так, как вы этого хотели.
Метод sort()
сравнивает строки, используя коды ASCII символов, и все символы в верхнем регистре имеют коды ASCII меньше, чем в нижнем регистре, поэтому вы получили результат, который вам показался неправильным.
С другой стороны, it.toLowerCase()
преобразует все строки в нижний регистр перед сортировкой, чтобы у вас была сортировка без учета регистра.
Да, я только что это понял. Это была бессмысленная трата времени. Спасибо за помощь.