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

问题描述

我有一个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);