以下哪项是 Java 8 中的最佳实践?
爪哇 8:
list.forEach(e -> e.operation);
爪哇 7:
for (E e : list) {
e.operation;
}
我有很多可以用 lambda 简化的循环,但是使用 lambda 有什么真正的好处Iterator.foreach吗?
代码的性能和可读性会提高吗?
以下哪项是 Java 8 中的最佳实践?
爪哇 8:
list.forEach(e -> e.operation);
爪哇 7:
for (E e : list) {
e.operation;
}
我有很多可以用 lambda 简化的循环,但是使用 lambda 有什么真正的好处Iterator.foreach吗?
代码的性能和可读性会提高吗?
在性能方面,与
Iterable.forEach使用foreach.根据官方javadocs
Iterable.forEach:那些。很明显,不会有明确的并行性。添加并行性将违反 LSP。
关于代码可读性:您可能
Iterable.foreach只使用简短的单行 lambda。如果 lambda 的“主体”增加,那么可读性很可能会比循环中的差。注意:此答案在使用
StreamAPI. 如果 only is usedjava.util.Iterable,则此答案将停止工作。在并行处理大量数据时,您将拥有强大的优势。如果您希望循环并行运行,那么您应该使用以下构造:
但是,在处理少量数据时使用非并行流会比
foreach循环更长。结论:
Iterable.foreach和 loop之间foreach没有性能差异。Iterable.foreach.parallelStream.foreach().