, Причина должна быть довольно очевидной.
у использовать лямбда-выражение Java 8 в следующем сценарии, но получаюЛокальная переменная fooCount, определенная во вложенной области видимости, должна быть окончательной или фактически конечной, Я понимаю, что говорится в сообщении об ошибке, но мне нужно рассчитать процент здесь, поэтому необходимо увеличитьfooCount
а такжеbarCount
затем рассчитайте процент. Так как же это сделать?
// key is a String with values like "FOO;SomethinElse" and value is Long
final Map<String, Long> map = null;
....
private int calculateFooPercentage() {
long fooCount = 0L;
long barCount = 0L;
map.forEach((k, v) -> {
if (k.contains("FOO")) {
fooCount++;
} else {
barCount++;
}
});
final int fooPercentage = 0;
//Rest of the logic to calculate percentage
....
return fooPercentage;
}
Один из вариантов у меня есть, чтобы использоватьAtomicLong
здесь вместоlong
но я хотел бы избежать этого, поэтому позже, если это возможно, я хочу использовать параллельный поток здесь.