У меня есть карта с 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("")