按值

时间:2016-09-26 22:02:45

标签: scala scala-collections

我试图从地图及其键中拉出最大值。例如:

val map = Map('a' -> 100, 'b' -> 23, ... 'z' -> 56)

如果100是最大值,我将如何拉('a',100)?我基本上想要使用Map.max,但按值而不是键搜索。

2 个答案:

答案 0 :(得分:23)

您可以将maxBy与键值对中的函数一起使用,只使用值:

val map = Map('a' -> 100, 'b' -> 23, 'z' -> 56)

map.maxBy(_._2)  // (a,100)

这是

的简短形式
map.maxBy { case (key, value) => value }

答案 1 :(得分:0)

稍作修改,以防您要查找的最大值在地图中多次出现:

// Find the entries with the max value in the map
val maxValue = map.maxBy(item => item._2)

// Filter the map and retain the entries with the max value
map.filter(item => item._2 == maxValue._2)