[英]Scala: filter Seq[] (make a diff)
我的Play应用程序中有两个Seq[_]
。
现在,我想对它们进行比较,从而得到包含所有不在另一项中的所有项的Seq。
我尝试使用.filter()
但我不知道那是一个好方法
我该如何实现?
提前致谢
更新 ...伪代码示例
我有两个Seq[]
1.)Seq [CarsInStock]属性[ID,品牌,颜色] [{1,Porsche,Red},{3,Mercedes,Blue}]
2.)Seq [CarsAfterSale]属性[ID,品牌,颜色,门,Windows] [{1,Porsche,Red,4,10}]
现在,我不想在两个seq[]
之间进行seq[]
。 结果,我想获取对象{3,Mercedes,Blue}]
因为它有库存,但是在售后,我必须知道必须从库存中删除哪些对象。 我想通过元素ID
来识别差异
您可以简单地过滤掉id
在另一个Seq
存在的所有汽车。
stock.filterNot(c => afterSale.exists(_.id == c.id))
除非您期望第二个Seq
较短,否则您可以通过创建一Set
id
来对其进行优化:
val afterSaleIds = afterSale.iterator.map(_.id).toSet
stock.filterNot(c => afterSaleIds.contains(c.id))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.