Kotlin为什么不对数组的第一个元素进行排序?

时间:2018-10-26 22:57:07

标签: kotlin

也许我在这里丢失了一些东西,但是似乎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 
>>> 

如您所见,排序似乎不是对字符串“ This”进行排序。

我尝试安装openjdk-11并更新我的所有软件包,但仍在获取该错误,并检查了1.2.71是最新的Kotlin软件包。

我做错什么了吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

如果您进行这样的排序:

testarray2.sortBy { it.toLowerCase() }

它将根据您的需要进行排序。
sort()方法使用字符的ASCII码比较字符串,并且所有大写字符的ASCII码都小于小写的ASCII码,因此您得到的结果似乎不对。
另一方面,it.toLowerCase()会在排序之前将所有字符串转换为小写,这样您就可以进行不区分大小写的排序。