我是Scala的新手,但现在我想使用Split()
来修复地板。我的意思是这样的:
scala.collection.SortedMap
答案 0 :(得分:5)
您可以使用from
上的until
,to
和Sorted
来执行您想要的操作,并声明他们会返回远程投影 [1] 集合:
m.to(l).lastKey //floor
m.from(l).firstKey //ceil
你必须检查空虚,因为它们会抛出NoSuchElementException
。我通常会使用隐式转换添加一些有用的实用程序:
scala> implicit class SortedMapOps[K, V](val m: SortedMap[K, V]) extends AnyVal {
| def floor(k: K): Option[(K, V)] = {
| val n = m.to(k)
| //You could just use n.lastOption here
| if (n.isEmpty) None
| else Some((n.lastKey, n(n.lastKey)))
| }
| }
defined class SortedMapOps
然后:
scala> SortedMap(1 -> "a", 2 -> "b", 3 -> "c", 5 -> "e")
res2: scala.collection.immutable.SortedMap[Int,String] = Map(1 -> a, 2 -> b, 3 -> c, 5 -> e)
scala> res2.floor(4)
res3: Option[(Int, String)] = Some((3,c))
[1] - 暗示这是O(1)
,(或者至少不是 O(N)
)