Java 8 Iterable.forEach()与foreach循环

问题:

以下哪项是Java 8中更好的做法?
Java 8:

joins.forEach(join -> mIrc.join(mSession, join));

Java 7:

for (String join : joins) {
    mIrc.join(mSession, join);
}

我有很多可以用lambdas“简化”的for循环,但是使用它们有什么优势,包括性能和可读性?
 编辑
我还会将这个问题扩展到更长的方法 – 我知道你不能从lambda返回或者断开父函数,如果将它们进行比较,应该提及它们,但是还有什么其他可以考虑的呢?

回答:

当并行执行操作时,可以考虑到优点。 (见http://java.dzone.com/articles/devoxx-2012-java-8-lambda-and – 关于内部和外部迭代的部分)

  • 从我的角度来看,主要的优点是可以定义循环中要完成的内容的实现,而无需决定是并行还是顺序执行
  • 如果你想让你的循环并行执行,你可以简单地写
      joins.parallelStream()。forEach((join) - > mIrc.join(mSession,join));

    您将不得不为线程处理等编写一些额外的代码。

 注意 :
对于我的答案,我假设加入实现java.util.Stream接口。如果连接仅实现java.util.Iterable接口,则不再是true。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Java 8 Iterable.forEach() vs foreach loop

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 1 = 4