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

May*_*tBe 2 android sortedmap kotlin

我有:

var schedulesByMonth = HashMap<String, MutableList<Schedule>>()
Run Code Online (Sandbox Code Playgroud)

Schedule 有一个startDate: Date属性。

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

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

schedulesByMonth.keys
Run Code Online (Sandbox Code Playgroud)

如果那个数组是["July 2018", "August 2018", "June 2018"]我需要的["June 2018", "July 2018", "August 2018"]

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

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

    }
Run Code Online (Sandbox Code Playgroud)

但这仅对键 ( String) 进行排序。我怎样才能it成为值 ( MutableList<Schedule>) 以便我可以按startDate其中一个时间表排序?

s1m*_*nw1 5

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

schedulesByMonth.entries.sortedWith(compareBy({ it.value[0].startDate })
Run Code Online (Sandbox Code Playgroud)