2

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

编辑:

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

4

2 回答 2

2

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

对于序列:

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

于 2010-12-09T09:27:05.597 回答
2

如果你使用 a SortedMap,那么你可以调用range它。嗯,有点。如果您计划之后从地图中添加和/或删除元素,则它被分解为 2.8.1。如果您避免这些操作应该没问题,并且它也已针对即将发布的 Scala 版本进行了修复。

于 2010-12-09T10:59:13.570 回答