Tayfun Omer Tayfun Omer - 3 years ago 169
Java Question

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()) {
stopwatch1.start();
} else if (stopwatch1.isStarted()) {

}

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

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

} else {

position++;
}
});

Answer Source

You can use AtomicInteger, and incrementAndGet method on it.

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

and incrementing position[0]++;

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download