首页 > 解决方案 > 为什么 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 包。

难道我做错了什么?

先感谢您。

标签: kotlin

解决方案


如果你做这样的排序:

testarray2.sortBy { it.toLowerCase() }

它将按照您的需要进行排序。
sort()方法使用字符的 ASCII 代码比较字符串,并且所有大写字符的 ASCII 代码都小于小写字符,因此您得到的结果在您看来是错误的。
另一方面,it.toLowerCase()将在排序之前将所有字符串转换为小写,因此您可以进行不区分大小写的排序。


推荐阅读