У меня есть карта с SomeClass -> Double Я хочу получить SomeClass, связанную с наименьшим значением. Как мне это сделать? Связи не имеют значения и могут быть разбиты произвольно, если это проблема.
Как получить минимальное значение только в Scala Карта
Ответ 1
Используйте minBy:
Map("a" -> 3.0, "b" -> 1.0, "c" -> 2.0).minBy(_._2)._1
Это дает "b", как ожидалось.
Ответ 2
Начиная с Scala 2.13, вы можете предпочесть B):Option[(K,V)] rel="nofollow noreferrer"> minByOption, чтобы также безопасно обрабатывать пустые Map:
Map("a" -> 3.0, "b" -> 1.0, "c" -> 2.0).minByOption(_._2).map(_._1)
// Some("b")
Map[String, Double]().minByOption(_._2).map(_._1)
// None
И вы всегда можете отказаться от значения по умолчанию, когда карта пуста:
Map[String, Double]().minByOption(_._2).map(_._1).getOrElse("")