【发布时间】:2018-02-20 01:54:03
【问题描述】:
在 for 循环中具有以下破坏行为的代码:
package test;
import java.util.Arrays;
import java.util.List;
public class Test {
private static List<Integer> integerList = Arrays.asList(1, 2, 3, 4);
public static void main(String[] args) {
countTo2(integerList);
}
public static void countTo2(List<Integer> integerList) {
for (Integer integer : integerList) {
System.out.println("counting " + integer);
if (integer >= 2) {
System.out.println("returning!");
return;
}
}
}
}
尝试使用 forEach() 用 Lambda 表达它会改变行为,因为 for 循环不再中断:
public static void countTo2(List<Integer> integerList) {
integerList.forEach(integer -> {
System.out.println("counting " + integer);
if (integer >= 2) {
System.out.println("returning!");
return;
}
});
}
这实际上是有道理的,因为 return; 语句仅在 lambda 表达式本身(在内部迭代中)而不是整个执行序列中强制执行,所以有没有办法获得所需的行为(打破 for 循环) 使用 lambda 表达式?
【问题讨论】:
标签: for-loop lambda foreach java-8