Found this that shows how to use a counter in stream's foreach, and I quote:
Method 1: Using Array
// define a list
List<Integer> numbers = List.of(5,67,89,23,12,99,478,900);
int[] counter = new int[1];
// iterate using forEach
numbers.forEach(num -> {
// check if list element is greater than 50
if(num > 50) {
counter[0]++;
}
});
System.out.println("Number of integers greater than 50 = " +counter[0]);
Method 2: Using AtomicInteger
// define a list
List<Integer> numbers = List.of(5,67,89,23,12,99,478,900);
AtomicInteger counter = new AtomicInteger();
// iterate using forEach
numbers.forEach(num -> {
// check if list element is greater than 50
if(num > 50) {
counter.getAndIncrement();
}
});
System.out.println("Number of integers greater than 50 = "+counter.get());
Method 3: Using AtomicReference
// define a list
List<Integer> numbers = List.of(5,67,89,23,12,99,478,900);
AtomicReference<Integer> counter = new AtomicReference<>(0);
// iterate using forEach
numbers.forEach(num -> {
// check if list element is greater than 50
if(num > 50) {
counter.getAndUpdate(value -> value + 1);
}
});
System.out.println("Number of integers greater than 50 = "+counter.get());