按值的日期 属性 对 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 })
我有:
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 })