我试图通过键获取地图中的闭合值。
我有这张地图
val map = Map(1->“ aaa”,2->“ bbb”,3->“ dddd”,5->“ eeee”,9->“ gggg”,100->“ z”)
如果我用钥匙1要求价值,我应该得到“ aaa”,如果我用钥匙6要求价值,我应该得到“ eeee”。
有什么想法可以通过简单的方式实现吗?
答案 0 :(得分:3)
您需要为此使用SortedMap
:
def findClosest(map: SortedMap[Int, String], key: Int): Option[String] =
(map.to(key).lastOption, map.from(key).headOption).match {
case (Some((lk,lv)), Some((rk,rv))) if rk - key < key - lk => Some(rv)
case (left, right) => (left orElse right).map(_._2)
}