Given a Map mapping a String to a List, is there a way to use Java Streams to return a Boolean where TRUE means one or more list had elements? If all lists in the map were e
int size = Map.entrySet().stream()
.map(entry -> entry.getValue())
.flatMap(list -> list.stream())
.size();
if(size==0)
return Boolean.False;
else
return Boolean.True;
This code is a simple one this may help for your work .
Stream::allMatch
In Java 8 you can check that not all lists are empty.
boolean anyNonEmpty = !map.values().stream().allMatch(List::isEmpty);
Notice that Stream::allMatch is a short-circuiting terminal operation. So the stream is efficient, not running any longer than need be.
Use the anyMatch method that finds if any element of the stream matches a Predicate
. Here, your predicate is that the entry's value (the list) is not empty.
boolean anyNonEmpty = map.entrySet()
.stream()
.anyMatch(entry -> !entry.getValue().isEmpty());