scala - 在 Scala 中对 map 使用 find 函数

标签 scala map

我试图在 map 中找到一个键,给定一个值。我使用 'find' 函数是因为无法为它找出正确的谓词:

val colors = Map(1 -> "red", 2 -> "blue")
def keyForValue(map: Map[Int, String], value: String) = {
    val bool = map.find{map.foreach{map.values(i) == value}}
        bool.key
  }

当我知道值时,如何遍历 map 并找到键?

最佳答案

您使用与 List 相同类型的谓词,但请记住您是 对其进行评估 (key,value) , 而不仅仅是值 (并且还得到一对!) .

简单的例子:

val default = (-1,"")
val value = "red"
colors.find(_._2==value).getOrElse(default)._1

关于scala - 在 Scala 中对 map 使用 find 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19572600/

相关文章:

generics - Scala - 从泛型类型构造方法名称?

Emacs 中的 Scala REPL

C++11 初始化 map

list - Haskell - 使用 toUpper 将列表 [String] 中的所有字母大写

scala - Scala 与 Akka 中的相互身份验证

scala - 如何原生地从Scala的HDFS中读取文本文件(不使用Spark)?

scala - 在 Haskell 中实现 List#flatten

将自定义类作为第二种类型的 C++ STL 映射

c++ - C++ 的标准映射插入语义的基本原理?

Scala类型不匹配问题(预期Map,发现scala.collection.mutable.HashMap)