關于Java8的foreach中使用return/break/continue產生的問題
foreach()中使用return/break/continue
今天使用lambda表達式處理集合時,發(fā)現(xiàn)對return、break以及continue的使用有點迷惑,于是自己動手測試了一下,才發(fā)現(xiàn)在使用foreach()處理集合時不能使用break和continue這兩個方法,也就是說不能按照普通的for循環(huán)遍歷集合時那樣根據(jù)條件來中止遍歷,而如果要實現(xiàn)在普通for循環(huán)中的效果時,可以使用return來達到,也就是說如果你在一個方法的lambda表達式中使用return時,這個方法是不會返回的,而只是執(zhí)行下一次遍歷,看如下的測試代碼:
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()不是一個循環(huán),不是設計為可以用break以及continue來中止的操作。
針對問題:
foreach()循環(huán)操作元素時,是否會退出lambda表達式
如下圖所示:

不管你遍歷到哪個集合中的元素,上圖都會停在第一行程序中而不會發(fā)生跳轉,所以是不會停止lambda表達式的執(zhí)行的。
到此這篇關于關于Java8的foreach()中使用return/break/continue產生的問題的文章就介紹到這了,更多相關foreach()中使用return/break/continue內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
解決springboot啟動時報錯的問題ApplicationEventMulticaster not&nbs
這篇文章主要介紹了解決springboot啟動時報錯的問題ApplicationEventMulticaster not initialized,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-06-06
Spring中的FactoryBean與BeanFactory詳細解析
這篇文章主要介紹了Spring中的FactoryBean與BeanFactory詳細解析,在Spring框架中,FactoryBean和BeanFactory是兩個關鍵的接口,用于創(chuàng)建和管理對象實例,它們在Spring的IoC(Inversion of Control,控制反轉)容器中發(fā)揮著重要的作用,需要的朋友可以參考下2023-11-11

