【发布时间】:2020-04-25 05:32:54
【问题描述】:
int sum = a;
int pow = 1;
for (int i = 0; i < n ; i++) {
sum += b*pow;
System.out.print(sum+" ");
pow *= 2;
}
在 Java-8 中使用 Stream 会为 sum 和 pow 变量提供错误,即该变量应为 final。
【问题讨论】:
-
您可以使用
AtomicInteger而不是常规的int来规避该问题。 -
@EdwinDalorzo:这是一种解决方法,也是一种数组技巧,但是原则上是错误的。 java-stream 提供了处理此类操作的机制。
-
您的
Stream尝试看起来如何? -
看到
AtomicInteger会让读者想知道一个简单的管道是如何并发的,和除了将循环转换为流之外,还会带来另一个不必要的性能损失。我强烈反对这种类型的滥用。
标签: java for-loop java-8 java-stream