我有电话号码列表,我需要根据电话类型进行过滤。最终结果应该是单个对象 (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
提交
取消