Java 8流查询-需要用一些流方法替换每个流查询


request
.getCustomer()
.stream()
.filter(custDetails -> custDetails.getCorrespondenceAddress() != null)
.forEach(
custDetails -> {
if (validateNotNull(
custDetails.getCorrespondenceAddress().getHasCorrespondenceAddress())) {
customAttributesList.add(
generateCustomAttributeHasCorrespondenceAddress(
custDetails.getCorrespondenceAddress().getHasCorrespondenceAddress(),
customerCountCorrespondenceAddress));
}
if (validateNotNull(
custDetails
.getCorrespondenceAddress()
.getCorrespondenceAddressPostcode())) {
customAttributesList.add(
generateCustomAttributeCorrespondenceAddressPostcode(
custDetails
.getCorrespondenceAddress()
.getCorrespondenceAddressPostcode(),
customerCountCorrespondenceAddressPostcode));
}
customerCountCorrespondenceAddress++;
customerCountCorrespondenceAddressPostcode++;
});

这里的请求包含一个客户列表,客户列表有通信地址,通信地址有两个字段。我试图将这些字段映射到自定义属性列表。是否有办法用一些流方法替换每个块中的if ?

看看你的代码,可能需要调用stream 2次。一个用于地址,另一个用于邮政编码。

request
.getCustomer()
.stream()
.filter(custDetails -> custDetails.getCorrespondenceAddress() != null)
.filter(custDetails -> validateNotNull(             custDetails.getCorrespondenceAddress().getHasCorrespondenceAddress()))
.forEach(custDetails -> {customAttributesList.add(
generateCustomAttributeHasCorrespondenceAddress(
custDetails.getCorrespondenceAddress().getHasCorrespondenceAddress(),
customerCountCorrespondenceAddress)))
customerCountCorrespondenceAddress++;});

request
.getCustomer()
.stream()
.filter(custDetails -> custDetails.getCorrespondenceAddress() != null)
.filter(custDetails -> validateNotNull(
custDetails.getCorrespondenceAddress().getHasCorrespondenceAddress()))
.forEach(
custDetails -> {
customAttributesList.add(
generateCustomAttributeCorrespondenceAddressPostcode(
custDetails
.getCorrespondenceAddress()
.getCorrespondenceAddressPostcode(),
customerCountCorrespondenceAddressPostcode));
}
customerCountCorrespondenceAddressPostcode++;
});

最新更新