Сортировка карты в Котлине в обратном порядке

Когда я хочу отсортировать Map, я использую:

map.toSortedMap()

Но как отсортировать карту в обратном порядке?

Например, мой Map<Double, Int> отсортирован с помощью .toSortedMap(), поэтому у меня есть:

{0.01=10, 0.05=7, 0.1=8, 0.25=6, 0.5=15, 1.0=3, 2.0=9, 5.0=8, 10.0=14, 20.0=6, 50.0=10}

Я бы хотел что-то вроде:

{50.0=10, 20.0=6, 10.0=14, 5.0=8, 2.0=9, 1.0=3, 0.5=15, 0.25=6, 0.1=8, 0.05=7, 0.01=10}

Попробуйте toSortedMap(Comparator.reverseOrder​())

Venkata Raju 09.03.2018 16:34
7
1
3 184
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Как сказал @Venkata Raju в комментарии, вы можете использовать для этого java.util.Comparator.reverseOrder() (доступно с версии 1.8):

map.toSortedMap(Comparator.reverseOrder())

Вы также можете использовать функцию reverseOrder() из пакета kotlin.comparisons стандартной библиотеки Kotlin:

map.toSortedMap(reverseOrder())

Comparator.reverseOrder () работает выше уровня API 21 ... самый простой способ получить ключи из sortedHashmap и перевернуть список ключей, а затем соответственно получить значения.

lateinit var entries: List<String>
entries = sortedList.keys.toList<String>()
entries = entries.reversed()
//get your values from map on the basis of keys

Немного поздно, но надеюсь, что это поможет.

для API <= 23

map.asIterable().reversed()

для API> 24

map.toSortedMap(Comparator.reverseOrder())

Другие вопросы по теме