如何仅在Scala Map中获取最小值

时间:2012-01-05 22:22:46

标签: scala

我的地图有SomeClass -> Double我希望SomeClass与最小值相关联。我该怎么做呢?关系并不重要,如果这是一个问题,可以任意打破。

2 个答案:

答案 0 :(得分:36)

使用minBy

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

这会按预期提供"b"

答案 1 :(得分:0)

Scala 2.13开始,您可能更喜欢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为空时,您始终可以决定使用默认值:

Map[String, Double]().minByOption(_._2).map(_._1).getOrElse("")