$ java CollectorVsGatherer (JDK 25) Collectors.groupingBy totals = {amy=19.75, bo=23.99} CHECK ok : amy's total via groupingBy/summingDouble is 19.75 CHECK ok : bo's total via groupingBy/summingDouble is 23.99 scan -> filter -> map, one pipeline = [total=30, total=50, total=75] CHECK ok : scan feeding straight into filter/map in the same pipeline gives [total=30, total=50, total=75] windowFixed(2) over 7 elements, then collect(counting()) = 4 CHECK ok : collect(counting()) after gather() proves the gather result is still a Stream you can collect further: 4 windows exit=0