Kotlin按降序排序hashmap

Kotlin按降序排序hashmap,kotlin,hashmap,Kotlin,Hashmap,我有val myHashMap=HashMap(),HashMap键值被格式化为一个字符串,例如20-06-2018如何按降序排序此HashMap 预期结果: 22-06-2018 : [] 21-06-2018 : [] 20-06-2018 : [] 我使用此代码对其进行排序,但结果是按升序排列的: val sortedMap = myHashMap.toSortedMap(compareBy { it }) 您可以使用: 以升序获得结果的原因是(根据您提供的值)所有日期的月份=6,年份

我有
val myHashMap=HashMap()
,HashMap键值被格式化为一个字符串,例如
20-06-2018
如何按降序排序此HashMap

预期结果:

22-06-2018 : []
21-06-2018 : []
20-06-2018 : []
我使用此代码对其进行排序,但结果是按升序排列的:

val sortedMap = myHashMap.toSortedMap(compareBy { it })
您可以使用:


以升序获得结果的原因是(根据您提供的值)所有日期的月份=6,年份=2018
如果有不同的日期,那么如果您只是执行
compareByDescending
,结果将是错误的
考虑以下日期: 21-05-2018, 22-4-2018.
如果按降序排序,您将获得2018年4月22日的第一名
您需要做的是转换yyyy MM dd中的日期,然后按降序排序:

fun convertDate(d: String): String {
    val array = d.split("-")
    return array[2] + array[1] + array[0]
}

val sortedMap =  myHashMap.toSortedMap(compareByDescending { convertDate(it) })
还有一件事:你的日期必须有2位数字表示月份和日期,4位数字表示年份,像2018年2月5日这样的日期会给出错误的结果。
最后一次编辑:在连接中不需要
-

这对我来说很有效

val sortedMap = myHashMap.toSortedMap(reverseOrder())

参考资料:。

您的预期结果似乎也是按降序排列的?另外,您在那里的
toSortedMap
调用对我来说非常有效,我按升序(20、21、22)获取元素。我的错误,更新的问题谢谢!Kotlin的确令人惊叹,几乎所有的东西都已经存在于标准库中:)
val sortedMap = myHashMap.toSortedMap(reverseOrder())