前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Java8的foreach()中使用return/break/continue

在Java8的foreach()中使用return/break/continue

作者头像
Erwin
发布2020-09-09 05:28:49
1.9K0
发布2020-09-09 05:28:49
举报
文章被收录于专栏:啸天"s blog啸天"s blog

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

代码语言:javascript
复制
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表达式的执行的。

相关文章:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档