这是我要对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?
答案 0 :(得分:0)
正如@GabeSechan指出的那样,您无法正确比较字符串表示形式中的数字,从性能角度来看,最好的方法是将时间戳最初存储为Long
,然后使用默认比较器,这样会更有效比较Long
而不是String
。
如果您想要最简单的解决方案,请使用it.toLong()
mediumGroups.toSortedMap(if (sortDescending) compareByDescending { it.toLong() } else compareBy { it.toLong() })