I have some Strings and if any one is null, then I need to return null. What is the way to achieve this via Stream? or is there any better way?
protected String toCombinedString(SomeClass shipment) {
String prefix1 = ofNullable(shipment)
.map(SomeClass::getBill)
.map(Bill::getPrefixString)
.orElse(null);
String prefix2 = ofNullable(shipment)
.map(SomeClass::getBill)
.map(Bill::getPrefixString)
.orElse(null);
String number1 = ofNullable(shipment)
.map(SomeClass::getBill)
.map(Bill::getNumberString)
.orElse(null);
String number2 = ofNullable(shipment)
.map(SomeClass::getBill)
.map(Bill::getNumberString)
.orElse(null);
....
return Stream.of(prefix1, number1, prefix2, number2...)
.filter(Objects::nonNull)
.reduce((a, b) -> a + "-" + b)
.orElseGet(String::new);
}
Example output combinations:
Only pass case is, every String should be non-empty or non-null, else return null
- String, String, String, String -> String-String-String-String