java8中跳出循環不能使用break?
通過測試發現:
對於java8中的特殊寫法lamada表達式中,不能使用break,會提示錯誤;
java8中使用return,會跳出當前循環,繼續下一次循環,作用類似continue;
java8中使用foreach,但是不是lamada表達式寫法,可以正常使用break或者return,可以直接跳出循環.
public class TestForEachJava8 {
public static void main(String[] args) {
System.out.println("c-------------------");
//lamada表達式中foreach使用break
List<String> c = Arrays.asList("6666", "7777", "8888", "9999");
c.stream().forEach(str ->{
if("8888".equals(str)){
return; //跳出當前循環,繼續下一輪
}
System.out.println(str);
});
System.out.println("d-------------------");
List<String> d = Arrays.asList("6666", "7777", "8888", "9999");
d.stream().forEach(str ->{
System.out.println(str);
if("8888".equals(str)){
break; //IDE提示錯誤:break cannot be used outside of a loop or a switch
}
});
System.out.println("a-------------------");
List<String> a = new ArrayList<>();
a.add("1111");
a.add("2222");
a.add("3333");
a.add("4444");
for(String str:a){
if("3333".equals(str)){
break; //正常跳出循環
}
System.out.println(str);
}
System.out.println("b-------------------");
List<String> b = new ArrayList<>();
b.add("1111");
b.add("2222");
b.add("3333");
b.add("4444");
for(String str:b){
if("3333".equals(str)){
return; //也能跳出循環
}
System.out.println(str);
}
}
}
輸出:
c-------------------
6666
7777
9999
d-------------------
6666
7777
8888
9999
a-------------------
1111
2222
b-------------------
1111
2222