排序 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-1A-2、...、A-10 似乎是 String。您需要从这些标识符中提取数字并将它们比较为 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)]