簡體   English   中英

如何從scala中的map中刪除鍵值

[英]how to remove key value from map in scala

Map(data -> "sumi", rel -> 2, privacy -> 0, status -> 1,name->"govind singh")

如果隱私為0,如何從此地圖中刪除數據。

Map(rel -> 2, privacy -> 0, status -> 1,name->"govind singh")  

如果使用不可變映射,則可以使用-方法創建沒有給定鍵的新映射:

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")

這取決於您使用的Scala.collection Map的類型。 Scala包含mutableimmutable映射。 檢查以下鏈接:

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

在這兩種類型的地圖中, -通常是刪除密鑰的操作。 細節取決於地圖的類型。 可以使用-=修改mutable映射。 就像是

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM