Scala 如何从映射中的所有键返回所有地址值

Scala 如何从映射中的所有键返回所有地址值,scala,Scala,如何返回所有密钥的所有地址列表 到目前为止我已经试过了,但不起作用: case class Company(name: String, locations: List[Location]) case class Location(name: String, address: String) val m = Map[String, Location](....) val addressValues:List[String]=m.values.map(u.address).toList 看看类型

如何返回所有密钥的所有地址列表

到目前为止我已经试过了,但不起作用:

case class Company(name: String, locations: List[Location])
case class Location(name: String, address: String)

val m = Map[String, Location](....)

val addressValues:List[String]=m.values.map(u.address).toList

看看类型和类型<代码>映射值返回新的
映射

您需要
.map
并获取位置,这将为您提供
Iterable[location]

   val addressValues: List[String] =  m.mavValues(x => x.locations)
如果您需要位置名称

scala> val m = Map[String, Location]("prayagupd" -> Location("First hill", "England"), 
                                     "blankman"  -> Location("Blank hill", "Blank States"))
m: scala.collection.immutable.Map[String,Location] = Map(prayagupd -> Location(First hill,England), blankman -> Location(Blank hill,Blank States))

scala> m.map { case (name, location) => location }
res10: scala.collection.immutable.Iterable[Location] = List(Location(First hill,England), Location(Blank hill,Blank States))
或者,您可以简单地执行
.values
,这也会提供
Iterable[Location]

scala> m.map { case (_, location) => location.name }
res14: scala.collection.immutable.Iterable[String] = List(First hill, Blank hill)

Map
上,
.values
函数返回所有值的
Iterable

scala> m.values
res2: Iterable[Location] = MapLike.DefaultValuesIterable(Location(First hill,England), Location(Blank hill,Blank States))
或者如果您有一个
映射[字符串,公司]

> val m1: Map[String, Location] = ???
> m1.values
res0: Iterable[Location] = MapLike(Location(..))

在映射上,
values
函数返回所有值,因此无需为此使用
Map
> val m2: Map[String, Company] = ???
> m2.mapValues(_.locations).values.flatten
res1: Iterable[Location] = List(Location(..))