我的要求如下,
我有两个班级,可以说A
和B
。
case class A(id: String)
case class B(p1: Sting, p2: String)
现在,我有两套。
val aSet: Set[A] = ...
val bSet: Set[B] = ...
现在,对于aSet
中的每个元素,我想从B's
中找到所有bSet
的集合,
a.id == b.p1 ++ b.p2
我想出了以下解决方案,
val myRequiredSet = aSet.map(a => bSet.filter(b => b.p1 ++ b.p2 == a.id))
我的麻烦是aSet
的大小约为10,000,而bSet
的大小约为150,000。
这需要很长时间,我无法提出更好的解决方案。
感谢您的帮助。
答案 0 :(得分:1)
虽然,这个问题有点尴尬。我认为您确实是在面对这个问题。我强烈建议您花更多的精力来正确表达您将来的问题,否则SO的人会忽略它。
假设您有以下两个课程。
case class A(id: String)
case class B(p1: String, p2: String)
你有这两套,
val aSet: Set[A] = ...
val bSet: Set[B] = ...
在这种情况下,对于A
的任何实例,id
对于p1 ++ p2
的对应实例都是B
。
现在,对于A's
中的所有aSet
,您想从B's
中找到具有相应的p1
和p2
的{{1}}集
bSet
答案 1 :(得分:0)
这就是我所做的,对我有用
val as=all.map( a=> ((a.name.get ++ a.someOtherName.get),a)).toMap
val result=smallerSet.map (a => as.get(a.id))