Scala Map值长度计算:如何处理null值避免空指针异常
解决Scala Map中null值的长度计算问题
针对你定义的Map:
val myMap = Map("A" -> "AB300","B" -> "XI134","C" -> null)
要避免null值导致的空指针异常,同时让null对应长度返回0,有几种简洁的处理方式:
直接用
getOrElse将null替换为空字符串,再计算长度:myMap.getOrElse("C", "").length不管键对应的值是null还是不存在,都会被替换成空字符串,空字符串的长度就是0,完美匹配需求。
用
Option包装值,处理null后转成字符串再取长度:Option(myMap("C")).getOrElse("").lengthOption(null)会转为None,getOrElse("")拿到空字符串后取长度0;如果是正常字符串,Option会包装成Some,最终返回原字符串的长度。更贴合Scala函数式风格的写法(同时处理键不存在和值为null的情况):
myMap.get("C").fold(0)(_.length)get方法返回Option[String],fold的第一个参数是None时的默认返回值(这里设为0),第二个参数是Some时对值执行的操作(取长度),逻辑清晰且安全。
内容的提问来源于stack exchange,提问作者Sri Bharath
相关产品推荐
相关产品推荐

