Reputation: 7157
I'm searching for an elegant way to stream only non-empty Optional
entries using the StreamEx library. Or the standard library, if it's possible.
Currently I'm using the following, rather verbose, approach:
List<Optional<String>> list =
Arrays.asList(Optional.of("A"), Optional.empty(), Optional.of("B"));
List<String> nonEmpty =
StreamEx.of(list).filter(Optional::isPresent).map(Optional::get).toList();
I'm essentially looking for something like StreamEx's nonNull
method, but for Optional
.
Upvotes: 3
Views: 1074
Reputation: 7157
A bit of research into the StreamEx issue backlog revealed issue 49, which provides a shorter approach and contains a discussion on the topic:
List<String> nonEmpty = StreamEx.of(list).flatMap(StreamEx::of).toList();
Shorter, although whether it's more readable is up for discussion.
Upvotes: 2