亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java 8 Stream() 具有復雜的 List 條件,它應該返回一個結果

Java 8 Stream() 具有復雜的 List 條件,它應該返回一個結果

慕妹3146593 2023-02-23 15:42:30
我有電話號碼列表,我需要根據電話類型進行過濾。最終結果應該是單個對象 (PhoneUsageType)。示例場景 1. 如果列表有 2 種不同類型的電話號碼,如 Cell_Phone 和 Home_Phone,它應該只返回 Cell_Phone 對象。2.如果它只有 Cell_Phone 那么它應該直接返回我那個對象 3.如果它沒有 Cell_Phone 那么它應該返回我 Home_Phone如果 Cell_Phone 在列表中可用,則它應該是首選對象使用list.stream().filter代碼PhoneUsageType phone1 = new PhoneUsageType();PhoneUsageKeyGrpType keyGroup1 = new PhoneUsageKeyGrpType();keyGroup1.setPurposeCode("CELL_PHONE");phone1.setPhoneUsageKeyGrp(keyGroup1);PhoneNumberType phoneNumber1 = new PhoneNumberType();phoneNumber1.setFullNumber("123");phone1.setPhoneNumber(phoneNumber1);PhoneUsageType phone2 = new PhoneUsageType();PhoneUsageKeyGrpType keyGroup2 = new PhoneUsageKeyGrpType();keyGroup2.setPurposeCode("CELL_PHONE");phone2.setPhoneUsageKeyGrp(keyGroup2);PhoneNumberType phoneNumber2 = new PhoneNumberType();phoneNumber2.setFullNumber("456");phone2.setPhoneNumber(phoneNumber2);List<PhoneUsageType> phoneUsageList = Lists.newArrayList();請幫我寫下邏輯。提前致謝。如果您需要更多詳細信息,請告訴我。
查看完整描述

2 回答

?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

不要按類型使用filter、使用min或排序。max


像下面這樣的東西:


enum PhoneType {

    CELL, WORK, HOME; // in order of preference

}


class Phone {

    public PhoneType getType() ...

    public String getNumber() ...

}


Phone best = Collections.min(phoneList, Comparator.comparing(Phone::getType));


查看完整回答
反對 回復 2023-02-23
?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

更好地使用最小和最大排序類型


enum PhoneType {

    Mobile, Office, personal; // in order of preference

}


class Mobile {

    public PhoneType getType() 

    public String getNumber() 

}


Comparator<Mobile> preferredNumber = Comparator.comparing(Mobile::getType);


Mobile best = mobileList.stream().min(preferredNumber).orElseThrow();

希望你能明白。


查看完整回答
反對 回復 2023-02-23
  • 2 回答
  • 0 關注
  • 240 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號