【问题标题】:Java 8 forEach cannot get count in lambda expressionJava 8 forEach 无法在 lambda 表达式中计数
【发布时间】:2018-10-04 07:39:34
【问题描述】:

我的代码是:

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

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

                // ..
            }
    );

我需要在 lambda 中计数,使用“count”变量计数,但 netbeans 告诉我一个问题,例如 “从 lambda 表达式引用的局部变量必须是最终的或有效的最终”

有没有办法在 Lambda 表达式中获取地图的索引计数 还是在外面获取变量?

【问题讨论】:

  • Map 的索引计数是什么意思,其中地图中没有称为索引的东西。
  • 我怎么称呼它?我想解决我的问题。

标签: lambda foreach


【解决方案1】:

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

你也可以用 atomicinteger 代替 int,调用 getAndIncremend 代替 count++,但是效果不大。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多