我有一个哈希表 val myHashMap = HashMap<String, MutableList<TestItem>>()
,哈希表的键值是格式化后的日期字符串,例如 20-06-2018
。如何按降序排序这个哈希表?
期望结果:
22-06-2018 : []
21-06-2018 : []
20-06-2018 : []
我使用这段代码进行排序,但结果是升序的:
val sortedMap = myHashMap.toSortedMap(compareBy { it })
您可以使用compareByDescending
:
val sortedMap = myHashMap.toSortedMap(compareByDescending { it })
这对我起作用了。
val sortedMap = myHashMap.toSortedMap(reverseOrder())
参考资料:https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.comparisons/reverse-order.html。
compareByDescending
会得到错误的结果。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位数的年份,例如2-5-2018这样的日期将会得到错误的结果。
最后编辑:在连接中不需要使用-
。
toSortedMap
方法在我的环境下运行得很完美,并按升序排列元素(20、21、22)。 - zsmb13