with an `AtomicInteger`, it could provide an index while traversing the stream of java collections.

         final int partition = 100;         final AtomicInteger counter = new AtomicInteger();          final ForkJoinTask<Integer> task = factorThreads.submit(() ->                 numbers.stream()                         .collect(Collectors.groupingBy(it -> counter.getAndIncrement() / partition))                         .values()                         .stream().map(integers -> {                             log.info("check the list {}", integers);                             return integers.size();                 }).reduce(0, Integer::sum)         );         if(task.join() != 1200)             log.error("the number is not tally");         else log.error("all 1200 numbers counted");