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"))
)
解决方案
您可以将组转换为 aSet
以仅获取唯一元素。
myList.groupBy(_.id).mapValues(_.toSet)
或者,正如 Dima 所指出的,如果您想将该组保留为List
不同的使用。
myList.groupBy(_.id).mapValues(_.distinct)
推荐阅读
- jquery - jQuery html 方法在 Chrome 上不起作用
- python - 如何在 Windows 上通过 ID 访问网络摄像头流
- javascript - Vue - 根据父数据的状态渲染组件
- java - 关于Java中的引用传递(内存地址)的问题
- java - 在 mvp arch 中传递对象
- sql-server - Netezza 从 SQL Server 加载表
- java - 'minOccurs' 和 'maxOccurs' 属性值将如何在 WSDL 文件的 `element` 标记内生成?
- javascript - NodeJs Console.log 不输出结果
- node.js - 如何使用 Nginx docker 作为反向代理在两个不同的容器之间进行路由?
- c++ - 未定义的对带有 Gdi32.lib 链接的“TextOutW@20”的引用