arrays - 对具有相同元素和顺序的列表进行排序时结果不同
问题描述
我花了一个小时试图在 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 排序输出。
解决方案
里面有俄语М
和{ \"name\": \"black, М, CHINA\" }
拉丁语M
"black, M, CHINA"
manualList
推荐阅读
- apache-spark - 在pyspark中标记两个日期之间的所有数据点
- kubernetes - 在 K8 1.16 的 AKS 中使用 Helm3 部署 Web 应用程序时出错
- google-apps-script - 从电子表格复制到另一个具有动态标题的电子表格
- django - 自定义身份验证背景和自定义登录表单的问题
- laravel-8 - SQLSTATE[HY000]:一般错误:1364 ----请帮助我使用 Laravel 8 解决它
- neo4j - 在 Neo4j 中添加与现有数据的关系
- powershell - PowerShell 中的日期时间无法转换我的时间
- reactjs - 在网络选项卡中显示但未在页面上显示时反应获取返回未定义
- netty - Grpc netty 处理程序库与 OpenJSSE 冲突
- python-3.x - 在 Unittest 中模拟 neo4j Record 实例