【问题标题】:Sort list with string date [Kotlin]使用字符串日期排序列表 [Kotlin]
【发布时间】:2020-09-14 22:24:55
【问题描述】:

我有 arraylist 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

提前谢谢...

【问题讨论】:

标签: sorting kotlin


【解决方案1】:

感谢@svkaka 提供信息。

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

我在我的代码中进行了更改,例如:

typeBeanArrayList.sortByDescending{it.date}

排序是完美的工作。

【讨论】:

  • 如何按日期排序?这个答案是错误的,它只需要字符串长度并按降序排序
  • 真的它不适用于日期格式,这个解决方案检查字符串作为日期它。日期不是日期对象
  • 我不知道这是怎么回事。我想知道是否有任何失败的边缘情况。
【解决方案2】:

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

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 方法返回一个新列表,即它们不会就地排序

【讨论】:

  • 是的,第一项属于2013年,其他都属于2012年
  • 这很长,我只使用一行:typeBeanArrayList.sortByDescending{it.date},这是完美的工作。感谢您的回复。
  • 我只是有点困惑,我只是看日期,但也考虑降序月份。
  • 是的,您的代码有效且更短,这是因为您的列表不包含 Strings,而是包含具有 date 属性的某种类型的实例(返回 DateLocalDate 对象,我猜)
  • @MR.K 很抱歉,但我不确定我是否完全理解:dateString 类型的吗?如果是这种情况,那么您将按字母顺序而不是按按时间顺序排序(不过,这可能是您想要的)
【解决方案3】:

如果您使用自定义模型,您可以使用类似的东西

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

【讨论】:

    【解决方案4】:

    使用

    [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 }
    

    【讨论】:

    • 我认为 OP 想要按 chronological 降序排序,这意味着他们不能使用 .sortDescending(),因为它将按 alphabetical 排序命令。他们需要使用sortByDescending,将String转换为Date对象,然后可以根据需要进行排序
    • 我只使用 typeBeanArrayList.sortByDescending{it.date},数据将按降序显示。谢谢@svkaka
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    • 2016-04-04
    • 2018-07-07
    • 2013-01-18
    • 2020-10-01
    • 2015-04-14
    相关资源
    最近更新 更多