使用 sortedBy(...) 排序在 kotlin 中不起作用

sak*_*sak 6 sorting android kotlin

我正在尝试对此进行排序:listOf("P5","P1","P2","P3","P10")通过使用 val list = categoryList.sortedBy { it }但返回的是这个:[P1, P10, P2, P3, P5],根据我的要求它应该返回[P1, P2, P3, P5, P10]所以我在这里做错了什么?

Mad*_*hat 11

由于您直接按字符串值排序,因此您会得到该结果。相反,您可以按字符串的整数部分进行排序,如下所示:

categoryList.sortedBy { it.substring(1).toInt() }
Run Code Online (Sandbox Code Playgroud)


Sha*_*T D 7

您正在排序String列表而不是Integer列表。这就是P10摆在面前的原因P2。因此,请尝试以下方法进行排序:

 var list: List<String> = mutableListOf("P5","P1","P2","P3","P10")
            .sortedWith(compareBy({ it.length }, { it }))
Run Code Online (Sandbox Code Playgroud)


小智 5

您正在对字符串进行排序,而不是对数字进行排序,因此 Kotlin 正在按字典顺序对它们进行排序。这就是为什么“P10”被评估为小于“P2”的原因。