Подтвердить что ты не робот

Как получить минимальное значение только в Scala Карта

У меня есть карта с SomeClass -> Double Я хочу получить SomeClass, связанную с наименьшим значением. Как мне это сделать? Связи не имеют значения и могут быть разбиты произвольно, если это проблема.

4b9b3361

Ответ 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("")