相关疑难解决方法(0)

Java 8 Iterable.forEach()vs foreach循环

在Java 8中,以下哪项更好?

Java 8:

joins.forEach(join -> mIrc.join(mSession, join));
Run Code Online (Sandbox Code Playgroud)

Java 7:

for (String join : joins) {
    mIrc.join(mSession, join);
}
Run Code Online (Sandbox Code Playgroud)

我有很多可以用lambdas"简化"的for循环,但使用它们真的有什么好处吗?它会改善他们的性能和可读性吗?

编辑

我还将这个问题扩展到更长的方法.我知道你不能从lambda中返回或破坏父函数,在比较它们时也应该考虑到这一点,但还有什么需要考虑的吗?

java for-loop java-8 java-stream

436
推荐指数
7
解决办法
35万
查看次数

Java 8 Lambda变量范围

我有2个代码示例:

int[] idx = { 0 };
List<String> list = new ArrayList<String>();
list.add("abc");
list.add("def");
list.add("ghi");
list.stream().forEach(item -> {
    System.out.println(idx[0] + ": " + item);
    idx[0]++;
});
Run Code Online (Sandbox Code Playgroud)

好好工作.

虽然此代码有编译错误:

int idx = 0;
List<String> list = new ArrayList<String>();
list.add("abc");
list.add("def");
list.add("ghi");
list.stream().forEach(item -> {
    System.out.println(idx + ": " + item);
    idx++;
});
Run Code Online (Sandbox Code Playgroud)

他说:

Local variable idx defined in an enclosing scope must be final or effectively final.
Run Code Online (Sandbox Code Playgroud)

唯一的区别是idxint或int数组.

根本原因是什么?

java lambda java-8

6
推荐指数
1
解决办法
6725
查看次数

标签 统计

java ×2

java-8 ×2

for-loop ×1

java-stream ×1

lambda ×1