Scala:过滤Seq [](制作差异)

时间:2017-10-26 11:37:05

标签: scala playframework

我的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识别差异

2 个答案:

答案 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))