Set <ShipperModel> shippers = baseSiteSerivce.getCurrentBaseSite().getStores().get(0).getShippers();
final List<KeyValueStoreModel> kvList = keyValueStoreService.getKeyValueStoreModelListByCode(HERITAGEUNIT_DELIVERYINSTRUCTION_SHIPVIA);

for (ShipperModel shipperModel : shippers)
{
    for (KeyValueStoreModel keyValueStoreModel : kvList)
    {
        if(shipperModel.getCode().equals(keyValueStoreModel.getCode()))
        {
            // if codes are equals then it will remain in the kvList.
        }
    }
}

我有两个项目清单,并且根据要过滤kvlist的托运人
我想执行类似kvlist.remainAll(shipper(based on code))的操作,并希望将这些循环转换为流代码。

最佳答案

不理想,但是您可以尝试执行以下操作:

List<KeyValueStoreModel> filtered = kvlist.stream().filter(
      kv -> shippers.stream().anyMatch(
               s -> s.getCode().equals(kv.getCode())
            )
      )
).collect(Collectors.toList());

因此,我们得到了一个kv元素的Stream,然后检查托运人Set中是否有任何对应的元素,最后将匹配的元素收集到一个新的List中。

08-04 08:44