pmaurais
pmaurais

Reputation: 914

Getting the maximum key value pair in a Scala map by value

I am trying to pull the maximum value form a map along with its key. For example:

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

Where 100 is the largest value, how would I go about pulling ('a',100)? I essentially want to use Map.max but search by value rather than key.

Upvotes: 19

Views: 17664

Answers (2)

Victor
Victor

Reputation: 2546

A slight modification in case the max value you are looking for is present more than once in the map:

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

Upvotes: 3

0__
0__

Reputation: 67280

You can use maxBy with a function from the key-value pair to just the value:

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

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

This is a short form for

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

Upvotes: 37

Related Questions