我有電話號碼列表,我需要根據電話類型進行過濾。最終結果應該是單個對象 (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));

梵蒂岡之花
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();
希望你能明白。
添加回答
舉報
0/150
提交
取消