我的Play应用程序中有两个Seq[_]
es。
现在我想对这些做差异,并得到一个Seq,其中所有项目都不在另一个项目中。
我尝试使用.filter()
,但我不知道这是不是一个好方法
我怎样才能做到这一点?
提前致谢
更新 ... PseudoCode示例
我有两个Seq[]
1。)Seq [CarsInStock]
属性[ID,品牌,颜色]
[{1,Porsche,Red},{3,Mercedes,Blue}]
2。)Seq [CarsAfterSale]
属性[ID,品牌,颜色,门,Windows]
[{1,Porsche,Red,4,10}]
现在我不想在两个seq[]
之间做出差异。结果我想获得对象{3,Mercedes,Blue}]
,因为它有库存,但售后我必须知道哪些我需要从库存中删除。
我想通过元素的ID
识别差异
答案 0 :(得分:4)
您只需过滤掉id
存在Seq
的所有汽车。
stock.filterNot(c => afterSale.exists(_.id == c.id))
答案 1 :(得分:1)
除非您希望第二个Seq
缩短,否则您可以通过创建Set
id
来优化它:
val afterSaleIds = afterSale.iterator.map(_.id).toSet
stock.filterNot(c => afterSaleIds.contains(c.id))