6
我試圖從地圖中拉出最大值以及其鍵值。例如:按值獲取Scala地圖中的最大鍵值對
val map = Map('a' -> 100, 'b' -> 23, ... 'z' -> 56)
其中100是最大的價值,我怎麼會去拉( 'A',100)?我基本上想要使用Map.max,但是按價值而不是按鍵搜索。
我試圖從地圖中拉出最大值以及其鍵值。例如:按值獲取Scala地圖中的最大鍵值對
val map = Map('a' -> 100, 'b' -> 23, ... 'z' -> 56)
其中100是最大的價值,我怎麼會去拉( 'A',100)?我基本上想要使用Map.max,但是按價值而不是按鍵搜索。
可以使用maxBy
與函數從鍵值對只值:
val map = Map('a' -> 100, 'b' -> 23, 'z' -> 56)
map.maxBy(_._2) // (a,100)
這是爲了
map.maxBy { case (key, value) => value }
完美的縮寫形式,即作品!我不得不問,你在哪裏得到傳遞給maxBy()的謂詞的語法? – pmaurais
如果您查看[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}'的簡寫形式。 –