Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按值获取Scala映射中的最大键值对_Scala_Scala Collections - Fatal编程技术网

按值获取Scala映射中的最大键值对

按值获取Scala映射中的最大键值对,scala,scala-collections,Scala,Scala Collections,我试图将最大值连同其键一起从地图中拉出来。例如: 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 (

我试图将最大值连同其键一起从地图中拉出来。例如:

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 }

如果要查找的最大值在地图中出现多次,则需要进行轻微修改:

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

太好了,行得通!我不得不问,您从哪里获得传递给maxBy()的谓词的语法?如果您查看,您会发现for
Map[A,B]
def maxBy[C](f:((A,B))⇒ C) (隐式cmp:Ordering[C]):(A,B)
-恐怕文档格式被破坏了,所以我在这里用一个新的类型参数
C
编写了正确的表单。因此,将一个函数从(key,value)的元组传递给存在排序的任何其他值
map.maxBy(u._2)
then只是
map.maxBy{case(key,value)=>value}
的缩写形式。您好,如果一个以上的键有100,该怎么办?是否可以获取所有值而不是一个值?谢谢@首先确定最大值,然后过滤地图;e、 g.
val map=map('a'->100,'b'->23,'z'->56,'c'->100);val maxVal=map.valuesIterator.max;map.filter(u._2==maxVal)