我正在尝试解决一个问题,该问题要检查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
是来自流的字段
我想根据c
,a
b
a
,b
必须是要存储在地图中的某种组合。
答案 0 :(得分:3)
尝试
(for {
k <- a
v <- b
l <- codeMap.get(k)
} yield {
l.contains(v)
}).getOrElse(false)
如果找到组合,则输出true
,否则输出false
。
答案 1 :(得分:0)
find
可以对地图中每个元素的key
和value
进行操作,如果该值存在于地图中,则返回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)))