Java 8 Stream()具有复杂的列表条件,它应该返回一个结果
我有电话号码列表,需要根据电话类型进行筛选。最终结果应该是单个对象(PhoneUsageType)。 示例场景 1.如果列表中有两种不同类型的电话号码,如手机和家庭电话,那么它应该只返回我的手机对象。 2.如果它只有手机,那么它应该直接将该对象返回给我 3.如果它有,它没有手机,那么它应该把我家的手机还给我 如果列表中有手机,则手机应为首选对象 使用list.stream().filter 代码Java 8 Stream()具有复杂的列表条件,它应该返回一个结果,java,filter,collections,java-8,java-stream,Java,Filter,Collections,Java 8,Java Stream,我有电话号码列表,需要根据电话类型进行筛选。最终结果应该是单个对象(PhoneUsageType)。 示例场景 1.如果列表中有两种不同类型的电话号码,如手机和家庭电话,那么它应该只返回我的手机对象。 2.如果它只有手机,那么它应该直接将该对象返回给我 3.如果它有,它没有手机,那么它应该把我家的手机还给我 如果列表中有手机,则手机应为首选对象 使用list.stream().filter 代码 PhoneUsageType phone1=新的PhoneUsageType(); PhoneUsa
PhoneUsageType phone1=新的PhoneUsageType();
PhoneUsageKeyGrpType keyGroup1=新的PhoneUsageKeyGrpType();
按键组1.setPurposeCode(“手机”);
phone1.setPhoneUsageKeyGrp(keyGroup1);
PhoneNumberType phoneNumber1=新的PhoneNumberType();
电话号码1.setFullNumber(“123”);
电话1.设置电话号码(电话号码1);
PhoneUsageType phone2=新的PhoneUsageType();
PhoneUsageKeyGrpType keyGroup2=新的PhoneUsageKeyGrpType();
按键组2.setPurposeCode(“手机”);
phone2.setPhoneUsageKeyGrp(keyGroup2);
PhoneNumberType phoneNumber2=新的PhoneNumberType();
电话号码2.setFullNumber(“456”);
phone2.设置PhoneNumber(phoneNumber2);
List phoneUsageList=Lists.newArrayList();
请帮我写逻辑。提前谢谢。如果你需要更多的细节,请告诉我 不要使用
过滤器
,使用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));
更好地使用最小和最大排序类型
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();
枚举电话类型{
移动、办公室、个人;//按优先顺序排列
}
阶级流动{
公共电话类型getType()
公共字符串getNumber()
}
Comparator preferredNumber=Comparator.comparing(Mobile::getType);
mobilebest=mobileList.stream().min(preferredNumber.orelsetrow();
希望你得到它 如果您没有提到预期的输出或您已经进行的尝试,您应该在问题中包括PhoneUsageType类。或者
Phone best=Collections.min(phoneList,preferredNumber)代码>
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();