如果我有以下数据:
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"))
)
答案 0 :(得分:5)
您可以将组转换为Set
,仅获得 unique 元素。
myList.groupBy(_.id).mapValues(_.toSet)
或者,正如Dima指出的那样,如果您要将群组保留为List
,请使用distinct。
myList.groupBy(_.id).mapValues(_.distinct)