在Kotlin中,如何以相反的顺序迭代TreeMap?

时间:2018-10-25 07:42:27

标签: dictionary kotlin tree reverse

我有一个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 :(得分:2)

我将采用forEachReversed的这种实现方式:

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

与您的解决方案的区别如下:

  • K类型参数不必是Comparable调用以前需要的reverseOrder
  • descendingMap返回原始Map的视图,而不是将其复制
  • 该函数被标记为inline,就像标准库中最相似的函数一样