2017-03-02 61 views
2

到地圖我有一個類,看起來像這樣:轉換列表與重複鍵

case class Person(id : String, name : String, refId : String) {} 

而且我有個人的名單。

我想有
鍵地圖= REFID
值=列表[人]具有相同REFID (重複鍵)

我所做的:

val persons = getPersons() // get the List from somewhere 
val refMap = new mutable.HashMap[String,Seq[Person]]() 
for (person<- persons){ 
    refMap.put(person.refId,refMap.getOrElse(person.refId,new ArrayBuffer[Person]) :+ person) 
} 

這是我的第一個想法,它的工作原理,但我想要更多的Scala或更好的東西。你有好主意嗎?

我也試了一下這裏所寫的:Convert List of tuple to map (and deal with duplicate key ?)

但他們使用的元組,我無法要麼得到這項工作。 我也試過它將我的列表映射到元組第一個,但
1.我不想在無需重複2次遍歷列表(1次創建元組,1次創建映射)
2我試過,但我與元組失敗過

一個更好的代碼任何幫助將是很好

回答