2016-07-12 167 views
0

我只是习惯Scala和我有创建地图[字符串,地图[字符串,对象]从列表[对象]

case class Person(name: String, birthPlace: String, hairColor: String) 

我知道,应该有一个转换的好方法列表[Person]到

Map[Name, Map[Birthplace, Person]] 

但是,我不知道该怎么做。

任何和所有帮助,将不胜感激。

+0

只是一个一般性的问题:为什么不存储2个独立的

list .groupBy(_.name) .mapValues(_.groupBy(_.birthplace)) 

如果你想忽略多次出现,您可以通过在年底加入该丢弃地图(假设多个人可以有同一个出生地)?映射[Name,List [Person]]和Map [Birthplace,List [Person]],然后resultPersonListA.intersect(resultPersonListB)? imo的优势是您可以直接访问这两个地图? – elmalto

回答

4

可能会有更多的人具有相同的名称和出生地,所以这种类型的更好的数据类型将是Map[String, Map[String, Seq[Person]]。 可以使用.groupBy创建:

 .mapValues(_.mapValues(_.head)) 
相关问题