鉴于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))
如果您能想到更合适的类似地图的数据结构,请提出建议。
答案 0 :(得分:7)
m.from((2,1))
注意,结果是包含键值。
我刚刚在TreeMap.from
上检查了Scala 2.10,from
调用RedBlackTree
,这似乎是一种有效的实现(基于树的数据结构通常为O(log n) )。