的條件替換值的關鍵,我有幾個不可變的映射記錄,如:如何在地圖基礎上階
val map = Map("number"->7,"name"->"Jane","city"->"New York")
我需要確定"name"
鍵爲每個記錄,並檢查其值。如果值是3210,我需要用"Doe"
替換並更新地圖記錄。
的條件替換值的關鍵,我有幾個不可變的映射記錄,如:如何在地圖基礎上階
val map = Map("number"->7,"name"->"Jane","city"->"New York")
我需要確定"name"
鍵爲每個記錄,並檢查其值。如果值是3210,我需要用"Doe"
替換並更新地圖記錄。
這可以通過簡單的映射操作和模式匹配來實現。
scala> val dictionary = Map("number"->7,"name"->"Jane","city"->"New York")
map: scala.collection.immutable.Map[String,Any] = Map(number -> 7, name -> Jane, city -> New York)
scala> dictionary map {
| case ("name","Jane") => "name" -> "Doe"
| case x => x
| }
res3: scala.collection.immutable.Map[String,Any] = Map(number -> 7, name -> Doe, city -> New York)
謝謝你,它的工作。 – b1399877
@ b1399877。大。感謝您的確認。您是否可以通過點擊勾號接受發佈的答案之一? –
一個簡單if else
邏輯應該做的伎倆
map.map(k => {
if(k._1.toString.equalsIgnoreCase("name") && k._2.toString.equalsIgnoreCase("jane"))
(k._1, "Doe")
else
k
})
或簡單match case
應該做的伎倆以及由@流氓一個
map.map(k => (k._1.toString, k._2.toString) match{
case ("name", "Jane") => k._1 -> "Doe"
case _ => k
})
感謝解釋
請參考api文檔:http://www.scala-lang.org/api/current/scala/collection/Map.html – Pavel