【问题标题】:Sort Hashmap keys by date property of value按值的日期属性对 Hashmap 键进行排序
【发布时间】:2018-04-26 18:00:48
【问题描述】:

我有:

var schedulesByMonth = HashMap<String, MutableList<Schedule>>()

计划具有startDate: Date 属性。

我从Schedule 对象的巨大列表开始,并按月将它们分类到哈希图中。因此,如果 Schedule 对象上的 startDate 是 2018 年 6 月,它将进入键 June 2018 的列表。

这一切都很好,但我需要按月份正确排序的选择器的键:

schedulesByMonth.keys

如果该数组是["July 2018", "August 2018", "June 2018"],我需要它是["June 2018", "July 2018", "August 2018"]

我知道我可以制作一个 sortedMap:

val sorted = schedulesByMonth.toSortedMap(compareBy<String> {

    }

但这只会对键进行排序 (String)。如何使 it 成为值 (MutableList&lt;Schedule&gt;),以便我可以按其中一个时间表的 startDate 排序?

【问题讨论】:

    标签: android kotlin sortedmap


    【解决方案1】:

    您可以使用sortedWith 对条目进行排序,它将比较器作为参数。可以使用compareBy 轻松创建比较器:

    schedulesByMonth.entries.sortedWith(compareBy({ it.value[0].startDate })
    

    【讨论】:

    • 宾果游戏!太棒了,谢谢。我只是将.map { it.key } 标记到最后并得到一个很好的排序字符串数组。
    【解决方案2】:

    我认为这里的主要问题是错误的键类。只需将字符串替换为日期,一切都会变得容易得多。

    【讨论】:

      猜你喜欢
      • 2015-12-04
      • 2020-10-01
      • 2021-07-20
      • 2011-11-05
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多