2016-09-26 4 views
6

키와 함께 맵에서 최대 값을 가져 오려고합니다. 예를 들어 :값으로 스칼라 맵에서 최대 키 값 쌍 얻기

(100)는 최대 값이

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

은 어떻게 (100, 'A'를) 당기 가겠어요? 필자는 기본적으로 Map.max를 사용하지만 키가 아닌 값으로 검색하려고합니다.

답변

16

당신은 단지 값이 키 - 값 쌍에서 기능 maxBy를 사용할 수 있습니다

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

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

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

완벽한에 대한 간단한 형태, 작동합니다! maxBy()에 전달 된 술어에 대한 구문을 어디에서 구하고 있습니까? – pmaurais

+1

[API 문서] (http://www.scala-lang.org/api/current/#scala.collection.Map)를 살펴보면'Map [A, B]'를 찾을 수 있습니다 : def maxBy [C] (f : ((A, B)) ⇒ C) (암시 적 cmp : 주문 [C]) : (A, B)'- 문서 형식이 잘못 되었으니 까, 여기에 새로운 유형 매개 변수 'C'가 있습니다. 따라서 (key, value) 튜플의 함수를 순서가 존재하는 다른 값으로 전달합니다. 'map.maxBy (_._ 2)'는'map.maxBy {case (key, value) => value}'의 약식 일뿐입니다. –