带字符串日期的排序列表[Kotlin]

时间:2019-02-28 12:29:47

标签: sorting kotlin

我有一个数组列表 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

预先感谢...

4 个答案:

答案 0 :(得分:0)

使用

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

在这种情况下,如果要按参数使用顺序进行排序

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

答案 1 :(得分:0)

如果您有String个代表日期的列表,则按降序对它们进行排序的一种方法是:

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

val dateTimeFormatter: DateTimeFormatter = DateTimeFormatter.ofPattern("d-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,即它们不会对进行排序

答案 2 :(得分:0)

感谢@svkaka提供信息。

我只是注意到@svkaka答案中的一行: .sortByDescending { it.length }

然后我更改代码,如:

typeBeanArrayList.sortByDescending{it.date}

排序很完美。

答案 3 :(得分:0)

如果您使用的是自定义模型,则可以使用类似的方法

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