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(..))