2017-03-02 4 views
2

Ich habe eine Klasse, die wie folgt aussieht:Convert Liste des Objekts auf Karte mit doppeltem Schlüssel

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

Und ich habe eine Liste der Person.

Ich möchte mit
Schlüssel, eine Karte haben = RefId
Wert = Liste [Person], die die gleiche refId (Nachschlüssel) haben

Was ich tat:

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) 
} 

Das war meine erste Idee und es funktioniert, aber ich möchte etwas mehr Scala-ähnliches oder etwas, das besser aussieht. Haben sie eine Idee?

Ich versuchte auch, was hier geschrieben steht: Convert List of tuple to map (and deal with duplicate key ?)

Aber sie benutzen Tuple und ich konnte diese Arbeit auch nicht bekommen. Ich habe es auch versucht, meine Liste zu Tupel zuerst, aber
1. Ich möchte nicht zweimal über die Liste zu iterieren, wenn es nicht notwendig ist (1 Mal Tupel zu erstellen, 1 Mal, um die Karte zu erstellen.
2 . ich habe versucht, aber ich nicht auch mit Tupeln

Alle für einen besseren Code Hilfe wäre schön

Antwort

Verwandte Themen