2

オブジェクトのコレクションを、これらのオブジェクトのメンバーをキーとするマップに追加する (機能的な) 方法を見つけようとしています。

次のオブジェクトがあるとします (それらはすべて同じクラス O のインスタンスです)。

o1(a = 1, b = x)
o2(a = 1, b = y)
o3(a = 2, b = z)

次のタプルを含むMapキー付きメンバーを生成したいと考えています。a

(1, List(o1, o2))
(2, List(o3))

これで、明らかに、最初のリストの各オブジェクトを調べて、それらを追加しながら繰り返し実行できます。しかし、それを簡単に行う機能的な方法が欠けていると感じています。私はそれを達成しようとマップ、flatMaps、およびフィルターに苦労してきましたが、これまでのところ結果はありません。

4

1 に答える 1

3

groupByあなたが望むものです:

scala> val os = List(O(1,2), O(1,3), O(2,4))
os: List[O] = List(O(1,2), O(1,3), O(2,4))

scala> os.groupBy(_.a)
res3: scala.collection.immutable.Map[Int,List[O]] = Map(1 -> List(O(1,2), O(1,3)), 2 -> List(O(2,4)))
于 2012-09-12T10:43:41.310 に答える