有效地返回scala';中不存在的键的下一个较大值;什么是分类收藏?

有效地返回scala';中不存在的键的下一个较大值;什么是分类收藏?,scala,scala-collections,Scala,Scala Collections,在scala中,给定已排序的映射、树或列表,返回不存在键的下一个较大值的最有效方法是什么?此外,是否可以从该元素开始获取“迭代器/游标” 编辑: 我对“高效”的任何解释都很满意,例如“运行时”、“内存使用”、“清晰度”或“尽可能少的程序员时间来实现和维护”(感谢Kevin Wright)。将“高效”定义为“尽可能少的程序员时间来实现和维护” 对于序列: val s = Seq(2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41) val overSixt

在scala中,给定已排序的映射、树或列表,返回不存在键的下一个较大值的最有效方法是什么?此外,是否可以从该元素开始获取“迭代器/游标”

编辑:

我对“高效”的任何解释都很满意,例如“运行时”、“内存使用”、“清晰度”或“尽可能少的程序员时间来实现和维护”(感谢Kevin Wright)。

将“高效”定义为“尽可能少的程序员时间来实现和维护”

对于序列:

val s = Seq(2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41)
val overSixteen = s dropWhile (_ < 16)
vals=Seq(2,3,5,7,11,13,17,19,23,29,31,37,41)
val Oversixten=s下降时间(<16)
对于地图:

val s = Map(2->"a", 3->"b", 5->"c", 7->"d", 11->"e", 13->"f")
val overSix = s dropWhile (_._1 < 6)
val s=Map(2->“a”,3->“b”,5->“c”,7->“d”,11->“e”,13->“f”)
val overSix=s下降时间(_._1<6)

如果您喜欢迭代器,只需对生成的集合调用
.Iterator
,或者如果您对惰性行为特别感兴趣,可以在
删除之前使用
.view

如果您使用
SortedMap
,则可以对其调用
range
。嗯,有点。如果您计划在之后添加和/或删除地图中的元素,则将分解为2.8.1。如果您避免这些操作,这应该是正常的,并且对于即将推出的Scala版本也已修复。

如果没有此类操作,您可能希望执行
seq dropWhile(y
value@oxbow_lakes正如我所读到的,要求不仅仅是返回高于给定值的第一个元素,但是接下来的整个过程。如果没有这样的值,那么返回的序列是空的,但是您仍然可以映射它,或者,如果您只需要一个值,请调用
headOption
range
或替代方法
from
to
似乎是最好的方法。range不需要集合中的元素吗?@JamesMoore No。它将使用这些元素作为边界,但它并不要求它们出现在收藏中。