How to increment a “number” in a Java 8 lambda expression in a loop?


I have the following problem. I have an integer position which starts at 1 and increments every time a specific person from a txt is found at a specific position in an xml. If I use the classic iteration with the foreach for (PersonMatchInfo pmi : personMatchInfo) it works, but my senior asked me to do with the Java 8 foreach and this type of iteration works only with final variables. How can I increment the integer in the new Java 8 loop? Thank you.

int position = 1;
personMatchInfo.forEach(pmi ->{

                    if (!stopwatch1.isStarted()) {
                    } else if (stopwatch1.isStarted()) {


                    if (pmi.getPersonName().equals(e.getValue())) {

                        positionMap.put(position, positionMap.get(position) + 1);

                    } else {



You can use AtomicInteger, and incrementAndGet method on it.

Other solution would be int[] position = new int[]{1};

and incrementing position[0]++;

Source: stackoverflow