如何获取java.util.Set的填充字段<;对象>;或者如果字段为空,则返回其他内容?
我有一个Addresses类,用于Customer类的两个属性中,第一个属性是一个简单的对象,用于表示客户的默认地址,另一个属性是客户可以拥有的一组地址 我需要将postalCode字段发送到另一个类。我想在集合中签入是否有已填充的postalCode,如果是,则发送此值,否则(如果集合中没有已填充的postalCode),则我应该从默认地址发送postalCode值。如何做到这一点?我以前试过这种方法:如何获取java.util.Set的填充字段<;对象>;或者如果字段为空,则返回其他内容?,java,java-8,java-stream,Java,Java 8,Java Stream,我有一个Addresses类,用于Customer类的两个属性中,第一个属性是一个简单的对象,用于表示客户的默认地址,另一个属性是客户可以拥有的一组地址 我需要将postalCode字段发送到另一个类。我想在集合中签入是否有已填充的postalCode,如果是,则发送此值,否则(如果集合中没有已填充的postalCode),则我应该从默认地址发送postalCode值。如何做到这一点?我以前试过这种方法: Optional.ofNullable(Stream.of(product.getCust
Optional.ofNullable(Stream.of(product.getCustomer().getAddresses()).forEach
(i -> i.getPostalCode())).orElse(product.getCustomer().getAddressDefault().getPostalCode()))
我的课程如下:
public class Customer {
private Addresses addressDefault;
private Set<Addresses> addresses;
}
public class Addresses {
private String postalCode;
private String city;
private String state;
private String country;
}
公共类客户{
私人地址地址默认;
专用地址集;
}
公共类地址{
专用字符串后代码;
私人城市;
私有字符串状态;
私人国家;
}
使用Java 8 streams,您可以使用映射
将地址转换为其后代码
,使用过滤器
删除空值
值,并使用findFirst
获取第一个非空后代码
Stream.findFirst
通过返回可选值来处理空流。要获取其值或默认值,请使用Optional.orElse
方法
代码:
String postalCode = customer.addresses.stream()
.map(addresses -> addresses.postalCode)
.filter(Objects::nonNull)
.findFirst()
.orElse(customer.addressDefault.postalCode);
这一要求毫无意义。不同地址的邮政编码可能都不同。你可能发错了邮政编码。