【发布时间】:2019-04-10 03:26:01
【问题描述】:
我有这段代码,但我不明白为什么会出现以下错误:
local variables referenced from a lambda expression must be final or effectively final
这是我的代码
public int firstMissingPositive(int[] nums) {
int k;
for (int i = 1;; i++) {
if (!Arrays.stream(nums).anyMatch(x -> x != i)) {
k = i;
break;
}
}
return k;
}
【问题讨论】:
-
如果您键入 从 lambda 表达式引用的局部变量必须是 final 或有效 final 或它们的某种组合,SO 会显示多个重复项。
-
代码性能很差(O(n^2))。您可以通过对数组进行排序或通过构建找到的值的
boolean[]或 ... 来获得更好的性能 -
未来:请花一些时间为您的问题找到一个合理的标题。这是一个问答社区,所有内容都应该写成对未来的读者有帮助。很少有未来的读者会发现 我怎样才能解决这个问题? 是一个有用的起点......
-
今天很抱歉。我会牢记这一点。