2017-09-15 11 views
0

は、私はマップ内のオリジナルキーは重要ではありませんマップ地図[INT、シング]コンデンスScalaのマップ

val myMap = Map(1->Thing(100,"abc"), 2->Thing(100,"abcd"), 3->Thing(100,"abcde"), 4->Thing(200,"xyz")) 

を作ることができ、私はこれで

case class Thing(intValue: Int, stringValue: String) 

を持っている想像してみてください。私は何とか

地図(100->配列( "ABC"、 "ABCD"、 "ABCDE")、200->配列( "XYZ"))

+1

ことによってそれを行うことができますか? – michaJlS

答えて

1

は、あなたがこれまでに試してみました何GROUPBY

myMap.groupBy(_._2.intValue).mapValues(_.values.map(_.stringValue)) 
+0

ありがとうございます。私はこの返答を最も簡潔なものとして選択しました –

+0

回答の 'mapValues'に関する通常の警告:それは怠惰なので、同じキーを2回アクセスする必要がある場合は、値を再計算します。あなたが鍵にアクセスする必要がなければ、あなたはそれを支払うことはありません。したがって、その使用を慎重に検討してください。 –

1

クイックにこのデータ構造を変換したいですそして汚い

myMap.groupBy(_._2.intValue).map{ case (k,v) => (k, v.toList.map(_._2.stringValue))} 
関連する問題