微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Scala中,如何检查Map是否包含来自另一个Map的所有条目?

总的新问题.说我有2张地图

val map1 = Map("ram"->"2gb","size"->"15","color"->"red","fruit"->"strawBerry")
val map2 = Map("ram"->"2gb","color"->"red")

我想知道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
}

这是有效的(我认为),但我想知道是否有更好的东西.

解决方法

您可以将Map转换为Set,然后应用subsetof方法.

val map1 = Map("ram"->"2gb","color"->"red")

map2.toSet subsetof map1.toSet // res0: Boolean = true

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐