我有隨機的pojo值,我想按其中一個POJO值排序,我要排序的值的結構如下:A-1,A-2,A-3,A-4,A -5, ...
我嘗試對其進行排序,但該值實際上僅在 A-1 到 A-9 之間排序,而 A-10 的值始終低于 A-1。
這是我使用的代碼:
temp.sortWith { lhs, rhs ->
rhs?.blok_kamar?.let {
lhs?.blok_kamar?.compareTo(
it, false
)}!!
}
請幫忙。
uj5u.com熱心網友回復:
這就是字典排序的作業原理。"1000"小于"2",盡管1000大于2。看看引號。看起來你的A-1, A-2, ...,A-10是Strings。您需要從這些識別符號中提取數字并將它們作為Ints 進行比較:
data class Data(val id: String)
fun main() {
val list = mutableListOf(
Data("A-1"),
Data("A-10"),
Data("A-2"),
Data("A-30"),
Data("A-3")
)
list.sortBy { it.id.substring(it.id.indexOf("-") 1).toInt() }
println(list)
}
這列印:
[Data(id=A-1), Data(id=A-2), Data(id=A-3), Data(id=A-10), Data(id=A-30)]
uj5u.com熱心網友回復:
根據您的代碼,我不知道 temp 實際上是什么,所以這里有一個基于串列的想法讓您開始:
val result = list
.sortedBy {
it.id.substringBefore("-") "-" it.id.substringAfter("-").padStart(3, '0')
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/427528.html
下一篇:第3遍結束時的排序演算法輸出
