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

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

如果過濾值為空,如何跳過流過濾器?

如果過濾值為空,如何跳過流過濾器?

飲歌長嘯 2023-09-20 14:34:01
我有一個(gè) Java 對(duì)象列表。在數(shù)據(jù)庫中,有些對(duì)象有字段nextSyncDate,有些則沒有。我想要做的是將過濾器放在java流上,但前提是該字段存在并且例如大于今天的日期。所以簡化一下,我想獲取nextSyncDate比今天更大的對(duì)象和沒有此字段的對(duì)象(get()在此字段后獲取 NullPointException )。我已經(jīng)嘗試過類似的事情,但它沒有像我想要的那樣工作..List<MyObjects> objects; objects.stream()     .filter(obj -> Objects.nonNull(obj.getNextSyncDate()) && obj.getNextSyncDate().before(new Date()))另一方面,所有對(duì)象都有 field counter。我想做的另外是nextSyncDate為每個(gè)大于 15 的對(duì)象進(jìn)行設(shè)置(例如明天)。counter我之前嘗試過.map()對(duì)象.filter(),但它也不起作用。
查看完整描述

2 回答

?
慕的地10843

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊

創(chuàng)建流時(shí),您不會(huì)直接修改其源。您需要收集數(shù)據(jù)。您的過濾器似乎按預(yù)期工作。我個(gè)人不建議使用具有副作用的過濾流(執(zhí)行“ > 15,然后在其他地方counter設(shè)置”邏輯),但您可以使用另一個(gè)流操作來完成,例如(用于轉(zhuǎn)換,這在您的情況下不是必需的,但可以使用):nextSyncDatepeekmap

List<MyObjects> objects = /* omitted */;
List<MyObjects> filteredObjects = objects.stream()
    .peek(MyObjects::setNextSycDateWithSomeLogic())
    .filter(obj -> Objects.nonNull(obj.getNextSyncDate()) && obj.getNextSyncDate().before(new Date()))
    .collect(Collectors.toList());


查看完整回答
反對(duì) 回復(fù) 2023-09-20
?
蕭十郎

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊

過濾器counter還可以包含以下要求:


    final Date TODAY = Date.from(LocalDate.now().atStartOfDay(ZoneId.systemDefault()).toInstant());

    final int COUNTER_THRESHOLD = 15;

    objects.stream()

            .filter(obj -> Objects.nonNull(obj.getNextSyncDate())

                    && obj.getNextSyncDate().before(TODAY)

                    && obj.getCounter() > COUNTER_THRESHOLD)

過濾器提供的中間流有需要更新的對(duì)象,因此可以應(yīng)用 forEach:


    final Date TODAY = Date.from(LocalDate.now().atStartOfDay(ZoneId.systemDefault()).toInstant());

    final Date TOMORROW = Date.from(LocalDate.now().plusDays(1).atStartOfDay(ZoneId.systemDefault()).toInstant());

    final int COUNTER_THRESHOLD = 15;

    objects.stream()

            .filter(obj -> Objects.nonNull(obj.getNextSyncDate())

                    && obj.getNextSyncDate().before(TODAY)

                    && obj.getCounter() > COUNTER_THRESHOLD)

            .forEach(obj -> obj.setNextSyncDate(TOMORROW));

另外,請(qǐng)考慮使用 LocalDate 而不是已棄用的 Date。


查看完整回答
反對(duì) 回復(fù) 2023-09-20
  • 2 回答
  • 0 關(guān)注
  • 123 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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