jja*_*394 2 algorithm maps functional-programming scala match
我有一个包含几个键值对的映射,我想要一种方法来遍历这些键值对并尝试将键与另一个映射的值进行匹配。如果存在匹配,则值将相互替换。换句话说,如果存在匹配值,则第二个映射的值将替换第一个映射的值。如果没有匹配,则不包含在结果中。
我尝试使用 scala .map 函数找出逻辑,但我是 scala 新手,不太明白。
例如,我有以下两个 scala Map[String, String]:
val lookupMap = Map("aaa" -> "apple", "bbb" -> "orange", "ccc" -> "banana")
val entriesMap = Map("foo" -> "ccc", "bar"-> "aaa", "baz" -> "zzz")
Run Code Online (Sandbox Code Playgroud)
我想要某种方法来获得以下结果:
val result = Map("foo" -> "banana", "bar" -> "apple")
Run Code Online (Sandbox Code Playgroud)
注意:“baz”未包含在内,因为它与查找映射中的任何内容都不匹配。
理解for
可以解决这个问题。
val result = for {
(k,ev) <- entriesMap
lv <- lookupMap.get(ev)
} yield (k,lv)
//result: Map[String,String] = Map(foo -> banana, bar -> apple)
Run Code Online (Sandbox Code Playgroud)