排序 POJO 值之一?
sortwith one of the POJO values?
我有随机的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
)}!!
}
请帮忙。
根据你的代码,我不知道 temp 实际上是什么,所以这里有一个基于列表的想法可以让你开始:
val result = list
.sortedBy {
it.id.substringBefore("-") + "-" + it.id.substringAfter("-").padStart(3, '0')
}
这就是字典顺序的工作原理。 "1000"
小于 "2"
,尽管 1000
大于 2
。看看引号。您的 A-1
、A-2
、...、A-10
似乎是 String
。您需要从这些标识符中提取数字并将它们比较为 Int
s:
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)]
我有随机的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
)}!!
}
请帮忙。
根据你的代码,我不知道 temp 实际上是什么,所以这里有一个基于列表的想法可以让你开始:
val result = list
.sortedBy {
it.id.substringBefore("-") + "-" + it.id.substringAfter("-").padStart(3, '0')
}
这就是字典顺序的工作原理。 "1000"
小于 "2"
,尽管 1000
大于 2
。看看引号。您的 A-1
、A-2
、...、A-10
似乎是 String
。您需要从这些标识符中提取数字并将它们比较为 Int
s:
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)]