Как получить мин по значению только в Scala Map - PullRequest
14 голосов
/ 06 января 2012

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

Ответы [ 2 ]

36 голосов
/ 06 января 2012

Использование minBy:

Map("a" -> 3.0, "b" -> 1.0, "c" -> 2.0).minBy(_._2)._1

Это дает "b", как и ожидалось.

0 голосов
/ 20 января 2019

Начиная с Scala 2.13, вы можете предпочесть minByOption, чтобы также безопасно обрабатывать пустые Map s:

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("")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...