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

时间:2019-07-24 18:29:18

标签: scala dictionary scala-collections

我正在尝试解决一个问题,该问题要检查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
     }

这是解决此问题的好方法吗? 正在蒸数据ab是来自流的字段 我想根据ca

的值填充表中的第三个字段b

ab必须是要存储在地图中的某种组合。

2 个答案:

答案 0 :(得分:3)

尝试

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

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

答案 1 :(得分:0)

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