在Kotlin中对LinkedHashMap日期排序(以毫秒为单位)

时间:2019-01-22 20:29:28

标签: android sorting kotlin

这是我要对LinkedHashMap<String,ArrayList<Image>>进行排序的工作

val sorted = mediumGroups.toSortedMap(if (sortDescending) compareByDescending { it } else compareBy { it })

LinkedHashMap中的字符串是currentTimeMillis中的日期

我遇到的问题是日期早于1000000000000

  

2001年9月8日星期六21:46:40

那些日期少1位,因此将它们排在首位。

是否有一种方法可以正确排序,而不必将我的LinkedHashMap转换为Int而不是String?

1 个答案:

答案 0 :(得分:0)

正如@GabeSechan指出的那样,您无法正确比较字符串表示形式中的数字,从性能角度来看,最好的方法是将时间戳最初存储为Long,然后使用默认比较器,这样会更有效比较Long而不是String。 如果您想要最简单的解决方案,请使用it.toLong()

mediumGroups.toSortedMap(if (sortDescending) compareByDescending { it.toLong() } else compareBy { it.toLong() })