Scala-基于键从映射读取值

Scala-基于键从映射读取值,scala,Scala,如果地图中有更多的键,有没有更好的方法根据键从地图中读取值 目前我有一个映射[String,List[String]],可以有20多个键: 我使用下面的方法来检索每个键的值 val names= map.getOrElse("Name", List.empty) . . . val cities = map.getOrElse("City", List.Empty) 如果我能用更好的方式写这篇文章,请帮忙。我很怀疑你将映射数据复制到局部变量中是否对自己有利 您可以做的一件事是使用模式匹配来节省

如果地图中有更多的键,有没有更好的方法根据键从地图中读取值

目前我有一个映射[String,List[String]],可以有20多个键

我使用下面的方法来检索每个键的值

val names= map.getOrElse("Name", List.empty)
.
.
.
val cities = map.getOrElse("City", List.Empty)

如果我能用更好的方式写这篇文章,请帮忙。

我很怀疑你将
映射数据复制到局部变量中是否对自己有利

您可以做的一件事是使用模式匹配来节省一些(不太多)输入

这种想法的一个主要缺点是,键列表的顺序必须与提取中变量的顺序完全相同

一个更好的方法是为
映射提供自己的默认值

val data = Map("City" -> List("NY","Rome")
              ,"Name" -> List("Ed","Al")
              // etc. etc.
              ).withDefaultValue(List.empty[String])
那么您就不需要
.getOrElse()


如果数据已存在于
地图中且易于访问(例如
地图.getOrElse(…)
),为什么要填充20多个单独变量(
名称
城市
),而不是这样?复制所有数据的目的是什么?我需要在很多地方使用它,我不想总是写map.getOrElse(…),所以存储在变量中。请建议,我是scala的新手
val data = Map("City" -> List("NY","Rome")
              ,"Name" -> List("Ed","Al")
              // etc. etc.
              ).withDefaultValue(List.empty[String])
data("City")     // res0: List[String] = List(NY, Rome)
data("Airport")  // res1: List[String] = List()