浅谈Java8 的foreach跳出循环break/return

这篇文章主要介绍了Java8 的foreach跳出循环break/return,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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 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 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 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 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

java中jdk8的forEach()方法return血的教训!

啊啊啊!记录。。。

JDK8中return竟然不return了。。。

but:::

2、

两个for循环作对比,如下:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持html中文网。

以上就是浅谈Java8 的foreach跳出循环break/return的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java