在 scala 中,给定一个排序的映射、树或列表,返回不存在键的下一个较大值的最有效方法是什么?此外,是否可以从该元素开始获得“迭代器/光标”?
编辑:
我对“高效”的任何解释感到满意,例如“运行时”、“内存使用”、“清晰”或“花费尽可能少的程序员时间来实现和维护”(感谢 Kevin Wright)。
在 scala 中,给定一个排序的映射、树或列表,返回不存在键的下一个较大值的最有效方法是什么?此外,是否可以从该元素开始获得“迭代器/光标”?
编辑:
我对“高效”的任何解释感到满意,例如“运行时”、“内存使用”、“清晰”或“花费尽可能少的程序员时间来实现和维护”(感谢 Kevin Wright)。
将“有效”定义为“花费尽可能少的程序员时间来实现和维护”......
对于序列:
val s = Seq(2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41)
val overSixteen = s dropWhile (_ < 16)
对于地图:
val s = Map(2->"a", 3->"b", 5->"c", 7->"d", 11->"e", 13->"f")
val overSix = s dropWhile (_._1 < 6)
如果您更喜欢迭代器,只需调用.iterator
生成的集合,或者如果您对惰性行为特别感兴趣,可以使用.view
before 。 dropWhile
如果你使用 a SortedMap
,那么你可以调用range
它。嗯,有点。如果您计划之后从地图中添加和/或删除元素,则它被分解为 2.8.1。如果您避免这些操作应该没问题,并且它也已针对即将发布的 Scala 版本进行了修复。