简体   繁体   English

更改Scala映射中的值

[英]Changing the values in a scala map

I have a Scala Map like this: 我有一个这样的Scala Map

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

Now, I want to replace the values of keys that contains ( a , d , h ) with 0.0, which should result in a map like this: 现在,我想用0.0替换包含( adh )的键的值,这将导致如下所示的映射:

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

Is there any simple way to do it? 有什么简单的方法吗?

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
}

( Edited the above to use Dima's more succinct syntax. ) 编辑以上内容以使用Dima更简洁的语法。

If your intent is to replace null or null-like values with "0.0", you could do this: 如果您打算将null或类似null的值替换为“ 0.0”,则可以执行以下操作:

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

I'll leave the implementation of isNull to you. 我将把isNull的实现留给您。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM