Map(data -> "sumi", rel -> 2, privacy -> 0, status -> 1,name->"govind singh")
如果隐私为0,如何从这张地图中删除数据。
Map(rel -> 2, privacy -> 0, status -> 1,name->"govind singh")
Map(data -> "sumi", rel -> 2, privacy -> 0, status -> 1,name->"govind singh")
如果隐私为0,如何从这张地图中删除数据。
Map(rel -> 2, privacy -> 0, status -> 1,name->"govind singh")
-
方法来创建一个没有给定键的新map:val mx = Map("data" -> "sumi", "rel" -> 2, "privacy" -> 0)
val m = mx("privacy") match {
case 0 => mx - "data"
case _ => mx
}
=> m: scala.collection.immutable.Map[String,Any] = Map(rel -> 2, privacy -> 0)
如果您使用可变映射,您可以使用-=
或remove
来删除一个键。如果您希望将其扩展并删除多个成员,则filterKeys
是最佳选择:
val a = Map(
"data" -> "sumi",
"rel" -> "2",
"privacy" -> "0",
"status" -> "1",
"name" -> "govind singh"
)
val b = a.filterKeys(_ != "data")
filterKeys
会生成一个无法序列化的映射。因此,如果您要过滤一个计划用作Spark Broadcast
的映射,则此方法将不起作用。在这些情况下,最好使用以下方法:valuesToRemove.foldLeft(theMap) { (filteredMap, valueToRemove) => filteredMap - valueToRemove }
- Citiesmutable
和immutable
Maps两种。请查看以下链接:http://www.scala-lang.org/api/2.10.2/index.html#scala.collection.immutable.Map 和 http://www.scala-lang.org/api/2.10.2/index.html#scala.collection.mutable.Map。-
通常是删除键的操作。细节取决于Map的类型。可以使用-=
来就地修改mutable
map。类似这样:if (m.contains("privacy") && m.getOrElse("privacy", 1) == 0) {
m -= "play"
}
另一方面,不可变映射无法就地修改,必须在删除元素后返回新映射。
if (m.contains("privacy") && m.getOrElse("privacy", 1) == 0) {
val newM = m - "play"
}
请注意,您正在创建一个新的不可变映射。
val m = Map("data" -> "sumi", "rel" -> 2, "privacy" -> 0,"status" -> 1,"name"->"govind singh")
scala> if(m("privacy")==0) m.filterKeys(_ != "data")
res63: Any = Map(name -> govind singh, rel -> 2, privacy -> 0, status -> 1)