Получение пары максимального значения ключа на карте Scala по значению

Я пытаюсь вытащить максимальное значение из карты вместе с ее ключом. Например:

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

где 100-наибольшее значение, как бы я потянул ('a', 100)? Я по существу хочу использовать Map.max, но поиск по значению, а не по ключу.

2 ответов


можно использовать maxBy С функцией от пары ключ-значение только значение:

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

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

Это краткая форма для

map.maxBy { case (key, value) => value }

небольшая модификация в случае, если максимальное значение, которое вы ищете, присутствует более чем один раз в карту:

// 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)