Nested loops including conditions in java 8
I have a piece of code
List<Obj1> result = new ArrayList<Obj1>();
for (Obj1 one : list1) {
for (Obj2 two : list2) {
if (one.getStatus() == two) {
result.add(one);
}
}
}
In Java 8 Using streams, I could write like this:
list1.stream().forEach(one -> {
if (list2.stream().anyMatch(two -> one.getStatus() == two)) {
result.add(one);
}
});
can be greatly simplified.
+3
source to share
1 answer
Assuming it list2
contains unique values ββand you can use for equals
instead , you can write it like this:==
Obj2
List<Obj1> result = list1.stream()
.filter(one -> list2.contains(one.getStatus()))
.collect(Collectors.toList());
Although it would be more efficient to place items list2
in Set
.
+7
source to share