使用字符串日期对列表排序[Kotlin]

dgtucam1  于 2023-03-19  发布在  Kotlin
关注(0)|答案(5)|浏览(161)

我有一个数组列表**typeBeanArrayList**,其中元素有点像日期:例如:

[30-03-2012, 28-03-2013, 31-03-2012, 2-04-2012, ...]

如何按降序排序。
代码:

typeBeanArrayList = database.getSingleCustomerDetail(c_id!!) //get data from SQlite database

creditListAdapter = CreditListAdapter(typeBeanArrayList)
rv_credit_list!!.adapter = creditListAdapter //Bind data in adapter

先谢了...

flvtvl50

flvtvl501#

感谢您发送编修。
我只注意到@svkaka answer中的一行:一月一日
并且i在代码中进行如下更改:

typeBeanArrayList.sortByDescending{it.date}

分类是完美的工作。

lxkprmvk

lxkprmvk2#

如果您有一个表示日期的String列表,按降序排序的一种方法是:

val dates = listOf("30-03-2012", "28-03-2013", "31-03-2012", "2-04-2012")

val dateTimeFormatter: DateTimeFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy")

val result = dates.sortedByDescending {
    LocalDate.parse(it, dateTimeFormatter)
}

println(result)

这将打印:

[28-03-2013, 2-04-2012, 31-03-2012, 30-03-2012]

注意,sortedByXXX方法返回一个新的List,也就是说,它们不排序 in place

yxyvkwin

yxyvkwin3#

用途

[30-03-2012, 28-03-2013, 31-03-2012, 2-04-2012, ...].sortDescending()

如果要按在本例中使用参数length进行排序

[30-03-2012, 28-03-2013, 31-03-2012, 2-04-2012, ...].sortByDescending { it.length }
t8e9dugd

t8e9dugd4#

如果您使用的是自定义模型,则可以使用类似于以下内容的内容

typeBeanArrayList.sortedWith(compareByDescending<YourModel> { it.date() })
0yg35tkg

0yg35tkg5#

data class YouModel(val startDate: String? = null) {

  val BY_DATE_ORDER =
            compareByDescending<YourModel> {
                val format = SimpleDateFormat("yyyy-MM-dd")
                var convertedDate = Date()
                try {
                    convertedDate = it.startDate?.let { it1 -> format.parse(it1) } as Date
                } catch (e: ParseException) {
                    e.printStackTrace()
                }

                convertedDate
            }
    }


yourList<YourModel>?.sortedWith(YourModel.BY_DATE_ORDER)

这对我很有效,我创建了一个降序比较器,使用函数将value转换为Comparable示例进行比较,在应用排序函数之前,我将字符串date转换为date。

相关问题