1 回答
TA贡献1797条经验 获得超6个赞
如果没有实际的类,很难测试您的代码,但是您的第一个流中会添加很多噪音。
下面是您的原始代码,其中添加了注释,希望能够消除您添加的一些额外噪音。
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())//remove and simply operate on x below
.collect(Collectors.toList())//This is not needed as you're already working with a stream
.stream()//This is not needed as you're already working with a stream
.map(x -> skuListMapper.toSkuListResource(x/*x.getSkuListEntity() remove map above*/)).collect(Collectors.toList());
你的答案应该看起来更符合这个思路。尽管没有充实的类,我不能保证您的逻辑按照您的预期工作。
return skuListEntityList.stream()
.filter(x -> x.getStatusTypDbky().getTypDbkey().equals(SkuListStatus.ACTIVE.getId()))
.flatMap(x -> x.getSkuListLineItems().stream())
.filter(s -> s.getStatusTypDbky().getTypDbkey().equals(SkuListLineItemStatus.ACTIVE.getId()))
.map(x -> skuListMapper.toSkuListResource(x.getSkuListEntity()))
.collect(Collectors.toList());
我建议阅读 https://www.baeldung.com/java-difference-map-and-flatmap 和 https://docs.oracle.com/javase/8/docs/api/java/util/stream/package- summary.html 准确了解您在每个中间操作中所做的事情。
如果您对到底发生了什么感到困惑,请删除方法链接并使用调试器查看调用的实际返回值。
IE。
Stream<SkuListEntity> skuListEntityStream = skuListEntityList.stream();
Stream<SkuListEntity> filteredSkuListEntityStream = skuListEntityStream.filter();
...
添加回答
举报