首页 > 解决方案 > 按值的日期属性对 Hashmap 键进行排序

问题描述

我有:

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

Schedule 有一个startDate: Date属性。

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

标签: androidkotlinsortedmap

解决方案


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

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

推荐阅读