How to Add Only Values that Exist from a List of Optionals in Java
How can we easily filter a list of Optionals to only include those with values that are present?
Suppose we have an ArrayList lst as well as a list of Optional<String> called lstOfOptionals.
ArrayList<String> lst = new ArrayList<>();
ArrayList<Optional<String>> lstOfOptionals = getOptionalFromSomewhere();
We want to add only the Optional values that exist from lstOfOptionals into lst.
Add to list using a for loop
We could use isPresent() with an if block to add to the list.
for(Optional<String> opt : lstOfOptionals) {
if (opt.isPresent()) {
lst.add(opt.get());
}
}
Or use ifPresent() to keep it slightly more concise.
for(Optional<String> opt : lstOfOptionals) {
opt.ifPresent(lst::add)
}
Add to list using Stream API
We can also use the Stream API to achieve the same results.
lstOfOptionals
.stream()
.filter(Optional::isPresent)
.map(Optional::get)
.forEach(lst::add);