gpt4 book ai didi

Scala 排序 map 没有方法 floor 或 ceil

转载 作者:行者123 更新时间:2023-12-04 17:53:40 25 4
gpt4 key购买 nike

我是 Scala 的新手,但现在我想使用 scala.collection.SortedMap 来收回发言权。我的意思是这样的:

val m = SortedMap[Long, String]()

def retreiveAndProcess(l: Long) = {
val floor = // get the floor of l to m
//do some with floor
}

最佳答案

你可以使用 fromuntilto 做你想做的事,它们可以在 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 ))

关于Scala 排序 map 没有方法 floor 或 ceil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42900513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com