2016-09-26 15 views

Odpowiedz

16

Można użyć maxBy z funkcji od pary klucz-wartość, aby po prostu wartość:

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

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

ten krótki formularz

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

doskonały, że działa! Muszę zapytać, skąd otrzymujesz składnię predykatu przekazanego do maxBy()? – pmaurais

+1

Jeśli zajrzysz do [dokumentacji API] (http://www.scala-lang.org/api/current/#scala.collection.Map), znajdziesz dla 'Map [A, B]': 'def maxBy [C] (f: ((A, B)) ⇒ C) (niejawny cmp: Kolejność [C]): (A, B) '- formatowanie dokumentu jest zepsute, obawiam się, więc napisałem poprawny formularz tutaj ze świeżym parametrem typu 'C'. Tak więc przekazujesz funkcję z krotki (klucz, wartość) do dowolnej innej wartości, dla której istnieje porządek. 'map.maxBy (_._ 2)' to jest po prostu krótki formularz dla 'map.maxBy {case (key, value) => value}'. –

Powiązane problemy