Я пытаюсь получить закрытое значение на карте по ключу.
У меня есть эта карта
val map = Map(1 -> "aaa", 2 -> "bbb", 3 -> "dddd", 5 -> "eeee", 9 -> "gggg", 100 -> "z")
если я запрашиваю значение с помощью ключа 1, я должен получить «ааа», если я запрашиваю значение с помощью ключа 6, я должен получить «eeee».
Любая идея, как добиться этого простым способом?
Что, если вы попросите 4
?
Для этого вам нужно использовать 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)
}
На вашей карте нет цифры 6. Почему вы хотите, чтобы цифра 6 притворялась цифрой 5?