【问题标题】:Different result when sorting list with same elements and order对具有相同元素和顺序的列表进行排序时结果不同
【发布时间】:2021-02-12 11:27:58
【问题描述】:

我花了一个小时尝试在 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

为了清楚起见,我需要手动列表排序输出。

【问题讨论】:

    标签: arrays list sorting kotlin


    【解决方案1】:

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

    【讨论】:

    • 很好看!⠀ 您是如何识别差异的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 2022-08-11
    • 1970-01-01
    • 2021-03-04
    • 2017-09-13
    • 1970-01-01
    相关资源
    最近更新 更多