有一个类:
case class Person (age: Int, name: String)
有两个列表:
val classRoom1 = List(Person(14, "Jimm"),Person(14, "Jack"), Person(13, "Ricky"))
val classRoom2 = List(Person(14, "Jimm"),Person(14, "Jack"), Person(13, "Ricky"), Person(13,"Susan"), Person(16, "Jack"))
有必要从第二个列表中选择名称字段,选择那些不在第一个列表中的对象并从中创建第三个列表。
val classRoom3 = List(Person(13,"Susan"))
如何以实用的风格做到这一点?
让我在额头提供一个简单的(就代码而言)解决方案:
困难就在这里
n*m
。如果它不适合您,您可以将其包装在地图中并实现线性复杂性。但是代码会更加混乱。
在小列表的情况下,此选项适用:
classRoom2.diff(classRoom2.intersect(classRoom1))
对于大型列表,最好执行以下操作:
https://scalafiddle.io/sf/Me1c4S5/0