我有一个包含对象列表的列表,我想从列表中仅检索活动记录。下面是我正在尝试的代码,但它没有正确过滤。
private List<SkuList> getActiveSkuListsAndSkuListLineItem(List<SkuListEntity> skuListEntityList) {
return skuListEntityList.stream()
.filter(x -> x.getStatusTypDbky().getTypDbkey().equals(SkuListStatus.ACTIVE.getId()))
.map(x -> x.getSkuListLineItems())
.flatMap(x -> x.stream()
.filter(s -> s.getStatusTypDbky().getTypDbkey().equals(SkuListLineItemStatus.ACTIVE.getId())))
.map(x -> x.getSkuListEntity())
.collect(Collectors.toList())
.stream().map(x -> skuListMapper.toSkuListResource(x)).collect(Collectors.toList());
}
上面的代码正在检索所有记录,无论过滤器 (ACTIVE) 条件如何。如果我破坏上面的代码,如下所示:
skuListEntityList = skuListEntityList.stream()
.filter(x -> x.getStatusTypDbky().getTypDbkey().equals(SkuListStatus.ACTIVE.getId()))
.collect(Collectors.toList());
List<SkuListLineItemEntity> skuListLineItemEntityList = skuListEntityList.stream()
.flatMap(x -> x.getSkuListLineItems().stream()
.filter(s -> s.getStatusTypDbky().getTypDbkey().equals(SkuListLineItemStatus.ACTIVE.getId())))
.collect(Collectors.toList());
那么skuListEntityList对象skuListLineItemEntityList只包含活动记录。当我将逻辑合并到一个 return 语句中时,我在上面做的事情出了什么问题。
FFIVE
相关分类