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

现在我显然可以迭代地完成它,遍历我的初始列表中的每个对象并在我继续进行时添加它们。但我觉得我错过了一种轻松做到这一点的实用方法。我一直在努力使用地图、平面地图和过滤器来尝试实现这一目标,到目前为止还没有结果。

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 回答