Scala SortedMap:获取大于给定键的所有键

时间:2013-02-19 15:50:48

标签: scala scala-collections

鉴于Scala collection.SortedMap和密钥k,获取所有密钥的最有效方式是什么(甚至更好,所有键值对)大于存储在有序地图中的k。返回的键集应保留键的顺序。 当然,我想避免仔细阅读整个数据结构(即使用filterKeys),并利用地图排序的事实。

我想做点什么:

val m = collection.SortedMap((1,1) -> "somevalue", (1,2) -> "somevalue", 
  (1,3) -> "somevalue", (2,1) -> "somevalue", (3,1) -> "somevalue")
m.getKeysGreaterThan((2,1))
// res0: scala.collection.SortedSet[(Int, Int)] = TreeSet((2,1), (3,1))

如果您能想到更合适的类似地图的数据结构,请提出建议。

1 个答案:

答案 0 :(得分:7)

Try this from the API doc

m.from((2,1))

注意,结果是包含键值。

我刚刚在TreeMap.from上检查了Scala 2.10,from调用RedBlackTree,这似乎是一种有效的实现(基于树的数据结构通常为O(log n) )。