如何获取java.util.set< object>的填充字段,或者如果字段为空,则返回其他内容?

5kgi1eie  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(260)

我有一个addresses类,在customer类的两个属性中使用,第一个属性是表示客户默认地址的简单对象,另一个属性是客户可以拥有的一组地址。
我需要将postalcode字段发送到另一个类。我想签入集合<>如果有一个填充的postalcode,如果是,发送这个值,否则(如果集合<>中没有填充的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;

}
pnwntuvh

pnwntuvh1#

使用Java8流,您可以 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);

相关问题