问题描述
我有一个Addresses类,用于Customer类的两个属性,第一个属性是一个简单的对象,代表客户的默认地址,另一个属性是客户可以拥有的地址的Set 。
>我需要将postalCode字段发送到另一个类。我想在Set 中检查是否有填充的postalCode,如果是,则发送此值,否则(如果Set 中没有填充的postalCode),则应该从默认地址发送postalCode值。这该怎么做?我以前尝试过这种方式:
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流,您可以使用map
将地址转换为其postalCode
,使用filter
删除null
值,然后使用findFirst
获取第一个非空的postalCode。
Stream.findFirst
通过返回可选内容来处理空流。要获取其值或默认值,请使用Optional.orElse
方法。
在代码中:
String postalCode = customer.addresses.stream()
.map(addresses -> addresses.postalCode)
.filter(Objects::nonNull)
.findFirst()
.orElse(customer.addressDefault.postalCode);