在Java8中foreach()不能break,如果需要continue时,怎么办

Posted 泡^泡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Java8中foreach()不能break,如果需要continue时,怎么办相关的知识,希望对你有一定的参考价值。

结论:
在Java8的foreach()中不能break,如果需要continue时,可以使用return。lambda表达式中使用return时,这个方法是不会返回的,而只是执行下一次遍历。

测试代码:

  List<String> list = Arrays.asList("12", "14345", "16", "abch", "sdfhrthj", "mvkd");
        list.stream().forEach(e ->
            if(e.length() >= 3)
                return;
            
            System.out.println(e);
        );


可以看出return起到的作用和continue是相同的。

原因:
Stack Overflow中的答案,主要是说foreach()不是一个循环,不是设计为可以用break以及continue来中止的操作。

以上是关于在Java8中foreach()不能break,如果需要continue时,怎么办的主要内容,如果未能解决你的问题,请参考以下文章

关于 stream( ) 或 forEach() 为什么不能用如continue和break,如何替代

关于 stream( ) 或 forEach() 为什么不能用如continue和break,如何替代

注意forEach不能使用return跳出循环

Java8 Lambda 表达式中的 forEach 如何提前终止?

java8慎用java8的foreach循环

Java8中Stream类中的forEach是抽象方法,为啥在调用的时候不用重写该方法就能实现遍历?