Problema con Java 8 Lambda para una final efectiva mientras se incrementan los conteos
Quiero usar la expresión Java 8 Lambda en el siguiente escenario, pero estoy obteniendoLa variable local fooCount definida en un ámbito de cobertura debe ser final o efectivamente final. Entiendo lo que dice el mensaje de error, pero necesito calcular el porcentaje aquí, así que necesito incrementarfooCount
ybarCount
luego calcule el porcentaje. Entonces, ¿cuál es la forma de lograrlo?
// 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;
}
Una opción que tengo es usarAtomicLong
aquí en lugar delong
pero me gustaría evitarlo, así que más adelante, si es posible, quiero usar el flujo paralelo aquí.