Java 8 forEach无法在Lambda表达式中计数

时间:2018-10-04 07:39:35

标签: lambda foreach

我的代码是:

    int count = 0;
    contactVisits.keySet().forEach(
            key -> {
                count++; //cannot reach count here 

                //.doing my stuff......

                // ..
            }
    );

我需要用lambda计数,用“ count”变量计数,但是netbeans告诉我这样的问题 “从lambda表达式引用的局部变量必须是最终的或实际上是最终的”

是否有一种方法可以获取Lambda表达式中map的索引计数 还是在外面获取变量?

1 个答案:

答案 0 :(得分:1)

最好的方法是在地图上使用size()方法。

您也可以使用atomicinteger代替int,然后调用getAndIncremend代替count ++,但是效果不佳。

还有stream()。count(),但我认为第一种方法是最好的。