List 用Scala中的另一个值替换列表中的空值

List 用Scala中的另一个值替换列表中的空值,list,scala,nullpointerexception,null,List,Scala,Nullpointerexception,Null,我试图使用map将Scala列表中的空元素替换为空值。我目前有: val arr = Seq("A:B|C", "C:B|C", null) val arr2 = arr.map(_.replaceAll(null, "") ) 这给了我一个NullPointerExpection。最好的方法是什么?您正在尝试替换字符串中的空字符,而不是替换Seq中的空字符串。所以这里有一个正确的方法: val arr2 = arr.map(str => Option(str).getOrElse(""

我试图使用
map
将Scala列表中的空元素替换为空值。我目前有:

val arr = Seq("A:B|C", "C:B|C", null)
val arr2 = arr.map(_.replaceAll(null, "") )

这给了我一个NullPointerExpection。最好的方法是什么?

您正在尝试替换字符串中的空字符,而不是替换
Seq
中的空字符串。所以这里有一个正确的方法:

val arr2 = arr.map(str => Option(str).getOrElse(""))

如果值不为null,则此处的
选项将生成
Some()
,否则将生成
None
getOrElse
将返回您的字符串,如果它不是null或空字符串,否则将返回。

要真正理解
map
函数,我建议。更惯用的用法是:
vs.mapserve{case null=>“>case x=>x}
实际上不建议直接在Scala中使用
null
。所讨论的数据已经使用null。不禁止使用
null
关键字;在接收数据时,您只需要将其限制在这样一个边界。并将null排除在API之外。他们希望Option成为一个值类,以避免像您在这里所做的那样不必要地创建Option对象;那样的话,你的expr会更开胃。