如何检查Map中是否存在键值对组合

How to check if combination of key,value pair exists in Map

我正在尝试解决一个问题,我想检查 Map 中是否存在键值对 我有这样的地图:

val codemap = new Map[String, List[String]]

我想用静态值制作地图

val codeMap = Map(
  "Asset Banking" -> List("audio","doc"),
  "avalon" -> List("adaptive-module", "ebook-plus")
)

我有 2 个动态变量:

val a: Option[String] = Option("Asset Banking")
val b: Option[String] = Option("audio")

我想检查是否存在 a 和 B 的组合:

我能想到的逻辑是

    if(codemap.key.contains (a))
    {
      if(codemap.values exist for above key)
         then do something 

     }else
     {
       do something
     }

这是解决这个问题的好方法吗? 这是流数据 a,b 是来自流的字段 我想根据 ab

的值填充 table 中的第三个字段,称之为 c

a,b 需要是将存储在地图中的某种组合。

find 可以对地图中每个元素的 keyvalue 进行操作,如果该值存在于地图中,则返回 Option

scala> codeMap.find({case (a,b) => a  == "Asset Banking" && b == List()})
res14: Option[(String, List[String])] = None

scala> codeMap.find({case (a,b) => a  == "Asset Banking" && b == List("audio", "doc")})
res15: Option[(String, List[String])] = Some((Asset Banking,List(audio, doc)))

尝试

(for {
  k <- a
  v <- b
  l <- codeMap.get(k)
} yield {
  l.contains(v)
}).getOrElse(false)

如果找到组合则输出 true,否则 false.