如何通过独特的项目进行分组

Ant*_*ony 0 scala

如果我有以下数据:

List (
   Color("red", "43"), 
   Color("red", "53"), 
   Color("red", "63"), 
   Color("red", "43")
)
Run Code Online (Sandbox Code Playgroud)

如果我这样做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"))
)
Run Code Online (Sandbox Code Playgroud)

而不是上述内容,我如何才能groupBy对唯一的项目进行处理.最终,获得以下内容:

Map(
   "43" -> List(Color("red", "43")),
   "53" -> List(Color("red", "53")),
   "63" -> List(Color("red", "63"))
)
Run Code Online (Sandbox Code Playgroud)

Lui*_*rez 5

您可以将组转换为a Set以仅获取唯一元素.

myList.groupBy(_.id).mapValues(_.toSet)
Run Code Online (Sandbox Code Playgroud)

或者,如Dima所述,如果您希望将该组保留为List使用区别.

myList.groupBy(_.id).mapValues(_.distinct)
Run Code Online (Sandbox Code Playgroud)

  • 您不需要转换为set和back来获取不同的元素.`.mappValues(_.distinct)`会的. (2认同)