Scala中如何正确检查Map中不存在指定键?
Scala Map避免找不到键抛出错误的实现方法
你原来的代码里直接用dict_a(inp)会在键不存在时抛出NoSuchElementException,所以不能这么判断。下面是几种符合你需求的实现方式:
方法一:用contains检查后取值
先通过contains方法判断键是否存在,存在则取值,否则赋值null:
val dict_a = Map("apple" -> "198.0.0.1") val inp = "apple" val link = if (dict_a.contains(inp)) dict_a(inp) else null
方法二:用get+getOrElse处理Option
Scala的Map提供get方法,返回Option类型(存在键时为Some(值),不存在时为None),搭配getOrElse可以直接指定默认值:
val dict_a = Map("apple" -> "198.0.0.1") val inp = "apple" val link = dict_a.get(inp).getOrElse(null)
这种方式是Scala里更推荐的空值处理方式,Option能明确标识可能为空的场景。
方法三:直接用getOrElse方法
Map还提供了更简洁的getOrElse方法,直接传入键和默认值,一步完成判断与赋值:
val dict_a = Map("apple" -> "198.0.0.1") val inp = "apple" val link = dict_a.getOrElse(inp, null)
补充:如果业务场景允许,尽量避免使用null,推荐用
Option[String]或者空字符串作为默认值,能减少空指针异常的风险。
内容的提问来源于stack exchange,提问作者codeBarer
相关产品推荐
相关产品推荐

