关于Java8的foreach中使用return/break/continue产生的问题
foreach()中使用return/break/continue
今天使用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来中止的操作。
针对问题:
foreach()循环操作元素时,是否会退出lambda表达式
如下图所示:

不管你遍历到哪个集合中的元素,上图都会停在第一行程序中而不会发生跳转,所以是不会停止lambda表达式的执行的。
到此这篇关于关于Java8的foreach()中使用return/break/continue产生的问题的文章就介绍到这了,更多相关foreach()中使用return/break/continue内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
解决springboot报错找不到自动注入的service问题
这篇文章主要介绍了解决springboot报错找不到自动注入的service问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-08-08
详解Java的Hibernate框架中的缓存与原生SQL语句的使用
这篇文章主要介绍了Java的Hibernate框架中的缓存与原生SQL语句的使用,Hibernate是Java的SSH三大web开发框架之一,需要的朋友可以参考下2015-12-12
Spring 框架的 MethodInterceptor 简介及示例代码
MethodInterceptor接口定义了一个方法Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) ,该方法在代理对象的方法被调用时被触发,这篇文章主要介绍了Spring 框架的 MethodInterceptor 简介及示例代码,需要的朋友可以参考下2023-09-09
spring boot+jwt实现api的token认证详解
这篇文章主要给大家介绍了关于spring boot+jwt实现api的token认证的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一学习学习吧2018-12-12


最新评论