我试图找到一种(功能性)方法,将一组对象添加到一个键入这些对象成员的地图中。
我们说我有以下对象(它们是同一类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和过滤器来尝试实现这一点,到目前为止还没有结果。
答案 0 :(得分: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)))