第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用 Java 8 過(guò)濾對(duì)象列表并將過(guò)濾結(jié)果映射回同一列表

使用 Java 8 過(guò)濾對(duì)象列表并將過(guò)濾結(jié)果映射回同一列表

皈依舞 2023-10-12 17:09:52
我有一個(gè)包含對(duì)象列表的列表,我想從列表中僅檢索活動(dòng)記錄。下面是我正在嘗試的代碼,但它沒(méi)有正確過(guò)濾。 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());}上面的代碼正在檢索所有記錄,無(wú)論過(guò)濾器 (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對(duì)象skuListLineItemEntityList只包含活動(dòng)記錄。當(dāng)我將邏輯合并到一個(gè) return 語(yǔ)句中時(shí),我在上面做的事情出了什么問(wèn)題。
查看完整描述

1 回答

?
FFIVE

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();

...


查看完整回答
反對(duì) 回復(fù) 2023-10-12
  • 1 回答
  • 0 關(guān)注
  • 169 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)