scala - 有效地将成员映射到其所属结构

标签 scala

假设我有一个类Family,它内部有一个家庭成员的结构,只要Family提供了一个函数,就与这个问题没有真正的相关性 code> 称为 def member(m : Member) : Boolean,如果成员 m 是该家族的“一部分”,则返回 true

然而,最重要的是,一名成员可以属于多个家庭。

我有一份所有成员(member)的单独列表,并希望在成员(member)和家庭之间创建映射以便快速查找。

所以我有这样的东西:

val allMembers : Set[Member] = getAllMembers()
val allFamilies : Set[Family] = getAllFamilies()

val memberFamilyMap : Map[Member, Set[Family]] = ???

在给定 Family.member 函数的情况下,创建上述 memberFamilyMap 的最有效方法是什么,并且一个成员可以是多个家庭的成员?我正在尝试将 for-compression 与两者的生成器一起使用,但是事情变得有点棘手(我对 Scala 有点陌生)

最佳答案

我会这样做:

 allMembers.map(m => m -> allFamilies.filter(_.member(m))).toMap

不过可能有更有效的方法。

关于scala - 有效地将成员映射到其所属结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20456237/

相关文章:

scala - 使用宏重写 val 和 var 构造函数参数

scala - 写入 csv 文件 spark 时时间戳会更改格式

scala - DynamicVariable 不适用于 Future

scala - 如何在 Scala 中使用 Reader 和 Writer monad?

scala - 理解 Scala 中的类型参数

c# - 这段 Scala 代码在惯用的 C# 中看起来如何?

java - Java/Scala String中确定为长度为2的单个汉字

scala - 出于 mzero 的目的将案例类视为产品

scala - Apache Spark 抛出 java.lang.IllegalStateException : unread block data

function - Scala通用函数值(匿名函数)-缺少参数类型(错误)