加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

将列表转换为元素的映射 – > scala中的list(元素)

发布时间:2020-12-16 18:38:59 所属栏目:安全 来源:网络整理
导读:我有一个文档列表,其中Document拥有一个用户的所有者. 将此列表转换为用户地图到他们拥有的文档列表的最优雅方法是什么? 所以我举例说: "doc1" owned by user "John""doc2" owned by user "Frank""doc3" owned by user "John" 我应该得到一张地图: "John"
我有一个文档列表,其中Document拥有一个用户的所有者.

将此列表转换为用户地图到他们拥有的文档列表的最优雅方法是什么?

所以我举例说:

"doc1" owned by user "John"
"doc2" owned by user "Frank"
"doc3" owned by user "John"

我应该得到一张地图:

"John" -> List("doc1","doc3"),"Frank" -> List("doc2")

我可以想到一种方法是从文档中获取所有唯一用户,并且每个用户都将文档列表过滤为他们拥有的文档列表,但我想知道是否有使用固定数量的传递的方法如果列表很大,通过列表来防止任何性能问题.

解决方法

使用groupBy:

scala> case class Doc(id: String,owner: String)
defined class Doc

scala> List(Doc("doc1","John"),Doc("doc2","Frank"),Doc("doc3","John"))
res0: List[Doc] = List(Doc(doc1,John),Doc(doc2,Frank),Doc(doc3,John))

scala> res0.groupBy(_.owner)
res1: scala.collection.immutable.Map[String,List[Doc]] = Map(
  Frank -> List(Doc(doc2,Frank)),John -> List(Doc(doc1,John)))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读