, Причина должна быть довольно очевидной.

у использовать лямбда-выражение 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 но я хотел бы избежать этого, поэтому позже, если это возможно, я хочу использовать параллельный поток здесь.

Ответы на вопрос(3)

Ваш ответ на вопрос