zoukankan      html  css  js  c++  java
  • 在Java8的foreach()中不能break,如果需要continue时,可以使用return

    今天使用lambda表达式处理集合时,发现对return、break以及continue的使用有点迷惑,于是自己动手测试了一下,才发现在使用foreach()处理集合时不能使用break和continue这两个方法,也就是说不能按照普通的for循环遍历集合时那样根据条件来中止遍历,而如果要实现在普通for循环中的效果时,可以使用return来达到,也就是说如果你在一个方法的lambda表达式中使用return时,这个方法是不会返回的,而只是执行下一次遍历,看如下的测试代码:

    List<String> list = Arrays.asList("123", "45634", "7892", "abch", "sdfhrthj", "mvkd");
    list.stream().forEach(e ->{
    if(e.length() >= 5){
    return;
    }
    System.out.println(e);
    });
    上述代码的输出结果是如下图所示:

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

    想知道这是为什么,在Stack Overflow中找到一个答案,主要是说foreach()不是一个循环,不是设计为可以用break以及continue来中止的操作。

    ----------------------------------------------------------------------------------------------------------

    针对问题:

    1、foreach()循环操作元素时,是否会退出lambda表达式,如下图所示:

     

    不管你遍历到哪个集合中的元素,上图都会停在第一行程序中而不会发生跳转,所以是不会停止lambda表达式的执行的。
    ---------------------
    作者:lmy86263
    来源:CSDN
    原文:https://blog.csdn.net/lmy86263/article/details/51057733
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    记一次对网站的SEO优化改造
    pc端页面添加响应式布局
    linux开启coredump
    vue中鼠标事件
    垂直居中的几种方法
    最准确的身份证号码正则验证
    将数组[NaN ,1,21,32,NaN,41,5]里面的NaN成员剔除(复用underscore.js的filter方法)
    项目中使用Mockjs模拟数据
    研究生学习与生活(2019)
    研究生学习与生活(九)
  • 原文地址:https://www.cnblogs.com/softidea/p/10594029.html
Copyright © 2011-2022 走看看