为什么 Kotlins SortedMap 没有 .forEachIndexed() 函数?

m.r*_*ter 4 dictionary sortedmap kotlin

KotlinsSortedMap是“一个进一步提供其键上的总排序的映射”。

因此,它应该是可索引的。但是这个扩展不存在

`sortedMap.forEachIndexed()`
Run Code Online (Sandbox Code Playgroud)

为什么不?我是否忽略了什么?是性能原因吗?没有人打扰吗?

(是的,我知道,我可以使用 List<Pair<Key, Value>>,但这对于我的用例来说并不像“直观”结构,地图更适合)

Ale*_*exT 8

大多数拥有forEachIndexed它的东西要么从它获取它Iterable,要么将它作为扩展功能。Map不是,但它的属性之一,entries实际上是 a Set,它确实有,forEachIndexed因为它继承自Collection(继承自Iterable)。

这意味着您可以执行以下操作:

map.entries.forEachIndexed { index, (key, value) ->
        //do stuff
}
Run Code Online (Sandbox Code Playgroud)

我之所以将其添加到现有asIterable().forEachIndex答案中,是因为asIterable()创建了一个新对象。