1

我有几个不可变的地图记录,例如:

val map = Map("number"->7,"name"->"Jane","city"->"New York")

我需要识别"name"每条记录的键并检查其值。如果值为"Jane",我需要替换"Doe"并更新地图记录。

4

2 回答 2

8

这可以通过简单的映射操作和模式匹配来实现。

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)
于 2017-05-26T06:55:30.823 回答
0

一个简单的if else逻辑应该可以解决问题

map.map(k => {
  if(k._1.toString.equalsIgnoreCase("name") && k._2.toString.equalsIgnoreCase("jane"))
    (k._1, "Doe")
  else
    k
})

或者一个简单的match case应该做的伎俩以及@rogue-one 的解释

map.map(k => (k._1.toString, k._2.toString) match{
  case ("name", "Jane") => k._1 -> "Doe"
  case _ => k
})

谢谢

于 2017-05-26T07:06:21.040 回答