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();
...
添加回答
舉報