1 回答

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果沒(méi)有實(shí)際的類(lèi),很難測(cè)試您的代碼,但是您的第一個(gè)流中會(huì)添加很多噪音。
下面是您的原始代碼,其中添加了注釋?zhuān)M軌蛳砑拥囊恍╊~外噪音。
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());
你的答案應(yīng)該看起來(lái)更符合這個(gè)思路。盡管沒(méi)有充實(shí)的類(lèi),我不能保證您的邏輯按照您的預(yù)期工作。
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 準(zhǔn)確了解您在每個(gè)中間操作中所做的事情。
如果您對(duì)到底發(fā)生了什么感到困惑,請(qǐng)刪除方法鏈接并使用調(diào)試器查看調(diào)用的實(shí)際返回值。
IE。
Stream<SkuListEntity> skuListEntityStream = skuListEntityList.stream();
Stream<SkuListEntity> filteredSkuListEntityStream = skuListEntityStream.filter();
...
添加回答
舉報(bào)