如何按独特项目分组

时间:2018-12-02 17:58:00

标签: scala

如果我有以下数据:

List (
   Color("red", "43"), 
   Color("red", "53"), 
   Color("red", "63"), 
   Color("red", "43")
)

如果我在上面做val myMap: Map[String, List[Color]] = myList.groupBy(_.id),我将得到以下内容:

Map(
   "43" -> List(Color("red", "43"), Color("red", "43")),
   "53" -> List(Color("red", "53")),
   "63" -> List(Color("red", "63"))
)

代替上面的方法,我如何仅对唯一项目执行groupBy。最终,获得以下信息:

Map(
   "43" -> List(Color("red", "43")),
   "53" -> List(Color("red", "53")),
   "63" -> List(Color("red", "63"))
)

1 个答案:

答案 0 :(得分:5)

您可以将组转换为Set,仅获得 unique 元素。

myList.groupBy(_.id).mapValues(_.toSet)

或者,正如Dima指出的那样,如果您要将群组保留为List,请使用distinct。

myList.groupBy(_.id).mapValues(_.distinct)