是否可以将映射迭代器设置到Kotlin中的某个位置?
假设我有一个map:map,我知道这个map是如何创建的,它保留了迭代的顺序。如何迭代给定范围内的所有元素是否可以将映射迭代器设置到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
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实现类来实现它。它处于启用状态