加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 09:02:17 所属栏目:安全 来源:网络整理
导读:总的新问题.说我有2张地图 val map1 = Map("ram"-"2gb","size"-"15","color"-"red","fruit"-"strawberry")val map2 = Map("ram"-"2gb","color"-"red") 我想知道map1是否完全包含map2(map1中的额外键/值是可以的),Scala有什么方法可以做到这一点? 我能想到的
总的新问题.说我有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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读