gpt4 book ai didi

Scala - 按字段子集区分两个案例类列表

转载 作者:行者123 更新时间:2023-12-02 23:52:49 24 4
gpt4 key购买 nike

给定两个案例类别列表

case class Entity(field1: String, field2: String, field3: String)
val a: Seq[Entity] = ...
val b: Seq[Entity] = ...

如何仅根据field1和field2,忽略field3,查找a中不在b中的所有实体?

我考虑过重写 case 类的 equals() 函数,也是 case 类 ()(此处忽略字段)方法的巧妙技巧,但需要将这些字段进行多种组合以用于不同的用途案例,例如使用 field1 + field2 进行 diff,然后使用 field 1 + field 3,等等...

最佳答案

使用整数,而不是字符串,以便于测试:

def similar (e: Entity, f: Entity) = { e.field1 == f.field1 && e.field2 == f.field2 }

scala> a
res60: Seq[Entity] = List(Entity(1,2,3), Entity(1,3,4), Entity(4,6,8), Entity(3,4,5))

scala> b
res61: Seq[Entity] = List(Entity(1,3,5), Entity(4,6,8), Entity(4,9,25))

scala> a.filter (aa => {! b.exists {bb => similar (aa, bb)} })
res62: Seq[Entity] = List(Entity(1,2,3), Entity(3,4,5))

关于Scala - 按字段子集区分两个案例类列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48651604/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com