Java 8跳過本次循環(huán),繼續(xù)執(zhí)行以及跳出循環(huán),終止循環(huán)的代碼實(shí)例
在Java8之前,最開始使用for i 循環(huán),很老舊,后來有了高級(jí)的for each 循環(huán),然后這個(gè)跳出本次循環(huán)和跳出所有的for循環(huán),都簡單,稍微沒見過的就是跳出多層for循環(huán)。
然后就是Java8出的foreach循環(huán),這個(gè)循環(huán)里面,break和continue都不管用啦。需要使用return,這個(gè)只能跳過本次循環(huán),還是會(huì)繼續(xù)執(zhí)行for循環(huán)的,那么怎么跳出這個(gè)Java8的foreach循環(huán)呢?
下面對(duì)所有的循環(huán),都來了一次操作。
看看如何,跳出當(dāng)前循環(huán),繼續(xù)執(zhí)行;或者直接跳出for循環(huán);或者跳出多層for循環(huán)。
package com.lxk.java8.lambdaTest; import java.util.Arrays; import java.util.List; import java.util.Optional; /** * 跳出for循環(huán) * * @author LiXuekai on 2018/10/23 */ public class BreakForeach { public static void main(String[] args) { int max = 5; List<String> list = Arrays.asList("123", "12345", "1234", "4321", "1234567", "5678"); continueForeachJava8(max, list); System.out.println(); breakForeachJava8(max, list); System.out.println(); continueFor(max, list); System.out.println(); breakFor(max, list); System.out.println(); breakManyFor(max, list); } /** * Java8跳過一次foreach循環(huán),然后繼續(xù)執(zhí)行。 */ private static void continueForeachJava8(int max, List<String> list) { list.forEach(s -> { if (s.length() >= max) { return; } System.out.println(s); }); } /** * 跳出Java8的foreach循環(huán) * 還這沒找到,怎么跳出 */ private static void breakForeachJava8(int max, List<String> list) { //這么做是不對(duì)的 //try { // list.forEach(s -> { // if (s.length() >= max) { // throw new Exception(); // } // System.out.println(s); // }); //} catch (Exception e) { // System.out.println(e.getMessage()); //} //看需求,建議使用如下之一。 Optional<String> result = list.stream().filter(s -> s.length() >= max).findFirst(); System.out.println(result.orElse(null)); boolean lxk = list.stream().anyMatch(s -> s.length() >= max); System.out.println(lxk); } /** * continue 跳過本次循環(huán),繼續(xù)執(zhí)行。 */ private static void continueFor(int max, List<String> list) { for (String s : list) { if (s.length() >= max) { continue; } System.out.println(s); } } /** * break 是直接跳出for循環(huán),不再繼續(xù)執(zhí)行for循環(huán)到代碼了。 */ private static void breakFor(int max, List<String> list) { for (String s : list) { if (s.length() >= max) { break; } System.out.println(s); } } /** * break lxk 是直接跳出多層for循環(huán),不再繼續(xù)執(zhí)行for循環(huán)到代碼了。 */ private static void breakManyFor(int max, List<String> list) { lxk: for (String s1 : list) { System.out.println("第一層:" + s1); for (String s2 : list) { System.out.println("第二層:" + s2); for (String s3 : list) { if (s3.length() >= max) { break lxk; } System.out.println("第三層:" + s3); } } } } }
下面是上面的代碼的運(yùn)行結(jié)果,可以對(duì)照著看一下。
最后是對(duì)于:跳出Java8的lambda的foreach循環(huán)的說明,摘自某stackflow。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
基于Java實(shí)現(xiàn)一個(gè)簡單的數(shù)據(jù)同步組件
這篇文章主要為大家詳細(xì)介紹了如何基于Java實(shí)現(xiàn)一個(gè)簡單的數(shù)據(jù)同步組件,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解一下2023-06-06IKAnalyzer使用不同版本中文分詞的切詞方式實(shí)現(xiàn)相同功能效果
今天小編就為大家分享一篇關(guān)于IKAnalyzer使用不同版本中文分詞的切詞方式實(shí)現(xiàn)相同功能效果,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12Spring?Boot整合阿里開源中間件Canal實(shí)現(xiàn)數(shù)據(jù)增量同步
這篇文章主要為大家介紹了Spring?Boot整合阿里開源中間件Canal實(shí)現(xiàn)數(shù)據(jù)增量同步示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Java解析xml文件遇到特殊符號(hào)異常的情況(處理方案)
這篇文章主要介紹了Java解析xml文件遇到特殊符號(hào)&會(huì)出現(xiàn)異常的解決方案,實(shí)現(xiàn)思路很簡單通過在讀取xml文件使用SAX解析前讀取reader,具體實(shí)現(xiàn)方法及示例代碼跟隨小編一起看看吧2021-05-05Java判斷是否為簡體中文字符的實(shí)現(xiàn)方法
在應(yīng)用開發(fā)中,判斷簡體中文字符是一個(gè)重要但常被忽視的任務(wù),簡體中文和繁體中文在字符上有顯著的區(qū)別,因此在某些場(chǎng)景下我們需要判斷輸入的文本是否為簡體中文,本文將介紹如何使用Java進(jìn)行此判斷,并提供相應(yīng)的代碼示例,幫助開發(fā)者更好地理解這一過程2024-09-09