Сортировка даты LinkedHashMap в миллисекундах в Котлине - PullRequest
0 голосов
/ 22 января 2019

Вот то, что я делаю, чтобы отсортировать мои LinkedHashMap<String,ArrayList<Image>>

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

Строка в LinkedHashMap - это дата в currentTimeMillis

проблема, с которой я сталкиваюсь, - это когда датадо 1000000000000

Сб 8 сентября 2001 г. 21: 46: 40

эти даты на 1 цифру меньше, поэтому они сортируются по началу.

IsЕсть ли способ сортировки правильно без необходимости конвертировать мой LinkedHashMap в Int вместо String?

1 Ответ

0 голосов
/ 23 января 2019

Как отметил @GabeSechan, есть комментарий, что вы не можете правильно сравнивать число в строковом представлении, поэтому лучше всего будет сначала сохранить временные метки как Long, и тогда будет работать компаратор по умолчанию, и сравнение будет более эффективным.Long скорее String.Если вы хотите самое простое решение, просто используйте it.toLong()

mediumGroups.toSortedMap(if (sortDescending) compareByDescending { it.toLong() } else compareBy { it.toLong() })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...