Dictionary 在Kotlin中,如何以相反的顺序迭代树映射?

Dictionary 在Kotlin中,如何以相反的顺序迭代树映射?,dictionary,kotlin,tree,reverse,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 注意:这是一个自我回答的问题:我将使用的这个实现: inline fun <K, V> TreeMap<K, V>.forEachReversed(action: (Map.Entr

我有一个
TreeMap
,希望以相反的顺序迭代它。这样做的惯用方法是什么

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


注意:这是一个自我回答的问题:

我将使用
的这个实现:

inline fun <K, V> TreeMap<K, V>.forEachReversed(action: (Map.Entry<K, V>) -> Unit) {
    descendingMap().forEach(action)
}
inline fun TreeMap.forEachReversed(操作:(Map.Entry)->Unit){
下降映射().forEach(操作)
}
与您的解决方案的区别如下:

  • K
    类型参数不必是
    可比的
    ,这是以前调用
    反向排序所必需的
  • 返回原始
    贴图的视图,而不是复制它
  • 该函数标记为
    inline
    ,与标准库中的大多数类似函数类似

我将采用
的这种实现方式

inline fun <K, V> TreeMap<K, V>.forEachReversed(action: (Map.Entry<K, V>) -> Unit) {
    descendingMap().forEach(action)
}
inline fun TreeMap.forEachReversed(操作:(Map.Entry)->Unit){
下降映射().forEach(操作)
}
与您的解决方案的区别如下:

  • K
    类型参数不必是
    可比的
    ,这是以前调用
    反向排序所必需的
  • 返回原始
    贴图的视图,而不是复制它
  • 该函数标记为
    inline
    ,与标准库中的大多数类似函数类似

为什么投票被否决?我认为你应该加上一条警告:“注意:这是一个自我回答的问题”。否则,这个问题可能看起来太难解决了。我好几次被它抓住了……而且,即使人们注意到了,他们也可能不知道这是一件积极的事情,所以作为参考:他们应该阅读手册。为什么这会被否决?我认为你应该加上一个警告“注意:这是一个自我回答的问题”。否则,这个问题可能看起来太难解决了。我好几次被它抓住了……而且,即使人们注意到了,他们也可能不知道这是一件积极的事情,所以作为参考:他们应该阅读手册。