繁体   English   中英

Scala:过滤器Seq [](进行比较)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM