2016-07-12 201 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)) 
相關問題