Tho*_*mas 12 scala map scala-collections
总的新问题.说我有2张地图
val map1 = Map("ram"->"2gb", "size"->"15", "color"->"red", "fruit"->"strawberry")
val map2 = Map("ram"->"2gb", "size"->"15", "color"->"red")
Run Code Online (Sandbox Code Playgroud)
我想知道map1是否完全包含map2(map1 中的额外键/值是可以的),Scala有什么方法可以做到这一点?
我能想到的最好的是创建我自己的功能:
def doesMapContainMap(map1: Map[_,_], map2: Map[_,_]): Boolean = {
var matchCount: Int = 0
map2 foreach {
entry => {
if (map1.exists(x => x._1 == entry._1 && x._2 == entry._2)) {
matchCount += 1;
}
}
}
// true if the number of matches is equal to the number of elements in map2
map2.size == matchCount
}
Run Code Online (Sandbox Code Playgroud)
这是有效的(我认为),但我想知道是否有更好的东西.
小智 22
您可以将a转换Map为a Set然后应用该subsetOf方法.
val map1 = Map("ram"->"2gb", "size"->"15", "color"->"red", "fruit"->"strawberry")
val map2 = Map("ram"->"2gb", "size"->"15", "color"->"red")
map2.toSet subsetOf map1.toSet // res0: Boolean = true
Run Code Online (Sandbox Code Playgroud)
如果您不想复制收藏品,
map2.forall{ case (k,v) => map1.get(k).exists(_ == v) }
Run Code Online (Sandbox Code Playgroud)
你可以map2通过查找键map1,返回一个选项,并检查值是否存在以及它应该是什么来检查所有内容.
| 归档时间: |
|
| 查看次数: |
2826 次 |
| 最近记录: |