首页 > 解决方案 > 如何对独特的项目进行分组

问题描述

如果我有以下数据:

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

标签: scala

解决方案


您可以将组转换为 aSet以仅获取唯一元素。

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

或者,正如 Dima 所指出的,如果您想将该组保留为List不同的使用。

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

推荐阅读