如何根据指定Seq[String]过滤Scala中Seq[Map[String,String]]的键值对
实现代码
首先将允许的键列表转为Set,将键存在性查询的时间复杂度从O(n)优化到O(1),再遍历val1中的每个Map做键过滤即可:
val allowedKeys = val2.toSet val result = val1.map(_.filter { case (key, _) => allowedKeys.contains(key) })
运行后得到的result和预期输出完全一致:
val expected = Seq(Map("Name" -> "Heidi", "City" -> "Paris"), Map( "Country" -> "France"), Map("City" -> "Paris"))
如果使用Scala 2.13及以上版本,也可以用更简洁的filterKeys写法:
val result = val1.map(_.filterKeys(allowedKeys).toMap)
内容的提问来源于stack exchange,提问作者Didi
相关产品推荐
相关产品推荐

