目前我有一个 Map [String,List [String]] ,可以有超过 20个键:
我在下面使用它来检索每个键的值
val names= map.getOrElse("Name", List.empty)
.
.
.
val cities = map.getOrElse("City", List.Empty)
请帮助如果我能以更好的方式写出来。
答案 0 :(得分:3)
我非常怀疑你通过将Map
数据复制到局部变量来为自己做任何好处。
您可以做的一件事是使用模式匹配来保存一些(不多)输入。
val knownKeys = List("Name", "City", "Country") // etc. etc.
val List(names
,cities
,countries
// etc. etc.
) = knownKeys.map(data.getOrElse(_, List()))
这个想法的一个主要缺点是密钥列表必须与提取中变量的顺序完全相同。
更好的想法是让您的Map
拥有自己的默认值。
val data = Map("City" -> List("NY","Rome")
,"Name" -> List("Ed","Al")
// etc. etc.
).withDefaultValue(List.empty[String])
然后你不需要.getOrElse()
。
data("City") // res0: List[String] = List(NY, Rome)
data("Airport") // res1: List[String] = List()