按值的日期 属性 对 Hashmap 键进行排序

Sort Hashmap keys by date property of value

我有:

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<Schedule>),以便我可以按其中一个时间表的 startDate 排序?

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

您可以轻松地使用 sortedWith, which takes a comparator as its argument. Comparators can be created with compareBy 对条目进行排序:

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