Filtering out the Optional.empty

problem

You have a collection in Java with Optionals and some of them are empty. You wish to remove the empty ones.

SOLUTION

Stream. If you use Java 8 and beyond, you can use the stream API. Let’s suppose that you have the following list of Optionals:

Optionals.java
				
					List<Optional<Object>> objectList = List.of(Optional.empty(), Optional.of("test"),
            Optional.empty(), Optional.of(499),Optional.of(3444),
            Optional.of(33.33), Optional.of('a'));
				
			
Using filter() and map()

We filter out any Optional.empty() and then map them with Optional.get as follows:

Optionals.java
				
					List<Object> nonEmpty = objectList.stream() 
                .filter(Optional::isPresent) 
                .map(Optional::get)
                .collect(Collectors.toList());
				
			

Let’s put the code above into a main method and print the items to verify the outcome:

Optionals.java
				
					public static void main(String[] args) {
        List<Optional<Object>> objectList = Arrays.asList(
                                Optional.empty(), Optional.of("test"),
                                Optional.empty(), Optional.of(499),
                                Optional.of(3444), Optional.of(33.33),
                                Optional.of('a'));
                                
        List<Object> nonEmpty = objectList.stream()
                    .filter(Optional::isPresent)
                    .map(Optional::get)
                    .collect(Collectors.toList());
                    
        nonEmpty.forEach(System.out::println); 
    }
				
			
output
filtering out the Optional.empty in Java example

conclusion

We just saw how to remove the Optional.empty using streams and filter. Check out more Java posts

Share it!

Facebook
Twitter
LinkedIn
Reddit
Picture of Ellion

Ellion

Professional IT consultant, writer, programmer enthusiast interested in all sorts of coding.
Eats all cookies 🍪

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
0
Would love your thoughts, please comment.x
()
x