Kotlin按降序排序hashmap

Kotlin sort hashmap in descending order

我有val myHashMap = HashMap>(),hashmap key value被格式化为一个字符串,例如20-06-2018如何按降序对这个hashmap排序?

预期结果:

1
2
3
22-06-2018 : []
21-06-2018 : []
20-06-2018 : []

我使用此代码对其进行排序,但结果按升序排列:

1
val sortedMap = myHashMap.toSortedMap(compareBy { it })


您可以使用compareByDescending

1
val sortedMap = myHashMap.toSortedMap(compareByDescending { it })


按升序排列得到结果的原因是(根据您提供的值),所有日期的月份均为6,年份均为2018。
如果有不同的日期,那么如果只是执行compareByDescending,结果将是错误的。
考虑这些日期:2018年5月21日,2018年4月22日。
如果按降序排序,您将获得2018年4月22日的第一个数据!< BR>您需要做的是转换YY-MM-DD中的日期,然后按降序排序:

1
2
3
4
5
6
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这样的日期会给出错误的结果。
最后一次编辑:不需要串联中的-