首页 > 解决方案 > 对具有相同元素和顺序的列表进行排序时结果不同

问题描述

我花了一个小时试图在 Kotlin 中对两个相同的可变列表进行排序,但输出不同。有人可以解释一下,为什么?

代码:

val manualList = mutableListOf("black, M, CHINA", "black, XL, CHINA", "black, XXL, CHINA", "black, L, CHINA")
val testObj = JSONObject("{ \"193100014065201336100\": {\"name\": \"black, XL, CHINA\" }, \"193361385201336100\": { \"name\": \"black, L, CHINA\" }, \"193361386201336100\": { \"name\": \"black, М, CHINA\" }, \"1934182201336100\": { \"name\": \"black, XXL, CHINA\" } }")

val autoList = mutableListOf<String>()

for (key in testObj.keys()) {
    val obj = testObj.getJSONObject(key)
        autoList.add(obj.getString("name"))
}

println("Check class:")
println(manualList::class.java)
println(autoList::class.java)
println()
println("Check initial position:")
println(manualList.joinToString(" | "))
println(autoList.joinToString(" | "))
println()
println("Why???")
println(manualList.sortedBy { it }.joinToString(" | "))
println(autoList.sortedBy { it }.joinToString(" | "))

输出:

Check class:
class java.util.ArrayList
class java.util.ArrayList

Check initial position (same):
black, M, CHINA | black, XL, CHINA | black, XXL, CHINA | black, L, CHINA
black, М, CHINA | black, XL, CHINA | black, XXL, CHINA | black, L, CHINA

Why???
black, L, CHINA | black, M, CHINA | black, XL, CHINA | black, XXL, CHINA
black, L, CHINA | black, XL, CHINA | black, XXL, CHINA | black, М, CHINA

为了清楚起见,我需要 manualList 排序输出。

标签: arrayslistsortingkotlin

解决方案


里面有俄语М{ \"name\": \"black, М, CHINA\" }拉丁语M"black, M, CHINA"manualList


推荐阅读