是否可以将映射迭代器设置到Kotlin中的某个位置?

是否可以将映射迭代器设置到Kotlin中的某个位置?,kotlin,collections,iterator,Kotlin,Collections,Iterator,假设我有一个map:map,我知道这个map是如何创建的,它保留了迭代的顺序。如何迭代给定范围内的所有元素 val map: Map<Int, String> = mapOf( 1 to "one", 2 to "two", 3 to "three", 4 to "four") // Let's say I want to get all values after

假设我有一个map:map,我知道这个map是如何创建的,它保留了迭代的顺序。如何迭代给定范围内的所有元素

val map: Map<Int, String> = mapOf(
    1 to "one", 
    2 to "two", 
    3 to "three", 
    4 to "four")

// Let's say I want to get all values after key 3.

val iterator = map.iterator()
while (iterator.next().key != 3) {}
val itemsAfter3 = iterator.asSequence().map { it.value }
除了丑陋,它还在上演。有没有更好、更优雅、更高效的方法


我正在考虑使用map.keys.indexOf做一些事情,但这里的复杂性似乎也是线性的。

永远不要依赖内部实现,将来可能会更改。如果在迭代期间需要保留插入顺序的映射,请显式声明它:

val-map:map=linkedmapf 一比一,, 二比二,, 三比三,, 四比四 获取特定索引后的所有值很容易,如下所示:

val valuesAfterIndex3=map.values.drop3
Map接口中不支持此功能,因此您必须使用不同的数据结构,或者直接使用Map实现类来实现它。它处于启用状态