В Kotlin, как я могу перебрать TreeMap в обратном порядке? - PullRequest
0 голосов
/ 25 октября 2018

У меня есть TreeMap и я хочу перебрать его в обратном порядке.Каким будет идиоматический способ сделать это?

 val tree = TreeMap(mapOf(1 to "one", 2 to "two", 3 to "three"))
 tree.forEach { println(it.key) }

Ожидаемый результат будет 3, 2, 1

ПРИМЕЧАНИЕ: это вопрос с автоответчиком: https://stackoverflow.com/help/self-answer

1 Ответ

0 голосов
/ 25 октября 2018

Я бы пошел с этой реализацией forEachReversed:

inline fun <K, V> TreeMap<K, V>.forEachReversed(action: (Map.Entry<K, V>) -> Unit) {
    descendingMap().forEach(action)
}

Отличия от вашего решения следующие:

  • параметр типа K не делаетt должно быть Comparable, что ранее требовалось для reverseOrder вызова
  • descendingMap, вместо копирования
...