更改scala映射中的值

时间:2017-06-02 13:37:30

标签: scala

我有一个像这样的Scala Map

Map("a"->"Null", "b"->"12", "c"->"23", "d"->"", "e"->"apple", "f"->"pear", "g"->"banana", "h"->null) 

现在,我想将包含(adh)的键的值替换为0.0,这应该会产生如下地图:

Map("a"->"0.0", "b"->"12", "c"->"23", "d"->"0.0", "e"->"apple", "f"->"pear", "g"->"banana", "h"->"0.0")

有没有简单的方法呢?

1 个答案:

答案 0 :(得分:2)

val data = Map("a"->"Null", "b"->"12", "c"->"23", "d"->"", "e"->"apple", "f"->"pear", "g"->"banana", "h"->null)

val replaced = data.map {
  case (k@("a"|"d"|"h"), v) => (k, "0.0")
  case x => x
}

编辑以上内容使用Dima更简洁的语法。

如果你的意图是用“0.0”替换null或类似null的值,你可以这样做:

val replaced = data.map {
  case (k, v) if (isNull(v)) => (k, "0.0")
  case x => x
}

我会将isNull的实施方式留给您。