Java 8跳過(guò)本次循環(huán),繼續(xù)執(zhí)行以及跳出循環(huán),終止循環(huán)的代碼實(shí)例
在Java8之前,最開(kāi)始使用for i 循環(huán),很老舊,后來(lái)有了高級(jí)的for each 循環(huán),然后這個(gè)跳出本次循環(huán)和跳出所有的for循環(huán),都簡(jiǎn)單,稍微沒(méi)見(jiàn)過(guò)的就是跳出多層for循環(huán)。
然后就是Java8出的foreach循環(huán),這個(gè)循環(huán)里面,break和continue都不管用啦。需要使用return,這個(gè)只能跳過(guò)本次循環(huán),還是會(huì)繼續(xù)執(zhí)行for循環(huán)的,那么怎么跳出這個(gè)Java8的foreach循環(huán)呢?
下面對(duì)所有的循環(huán),都來(lái)了一次操作。
看看如何,跳出當(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跳過(guò)一次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) * 還這沒(méi)找到,怎么跳出 */ 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 跳過(guò)本次循環(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)的說(shuō)明,摘自某stackflow。
總結(jié)
以上就是這篇文章的全部?jī)?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è)簡(jiǎn)單的數(shù)據(jù)同步組件
這篇文章主要為大家詳細(xì)介紹了如何基于Java實(shí)現(xiàn)一個(gè)簡(jiǎn)單的數(shù)據(jù)同步組件,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解一下2023-06-06SpringJPA?做分頁(yè)條件查詢的代碼實(shí)踐
相信小伙伴們的項(xiàng)目很多都用到SpringJPA框架的吧,對(duì)于單表的增刪改查利用jpa是很方便的,但是對(duì)于條件查詢并且分頁(yè)?是不是很多小伙伴不經(jīng)常寫(xiě)到,今天給大家分享SpringJPA?做分頁(yè)條件查詢的案例代碼,感興趣的朋友一起看看吧2024-03-03IKAnalyzer使用不同版本中文分詞的切詞方式實(shí)現(xiàn)相同功能效果
今天小編就為大家分享一篇關(guān)于IKAnalyzer使用不同版本中文分詞的切詞方式實(shí)現(xiàn)相同功能效果,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12Spring?Boot整合阿里開(kāi)源中間件Canal實(shí)現(xiàn)數(shù)據(jù)增量同步
這篇文章主要為大家介紹了Spring?Boot整合阿里開(kāi)源中間件Canal實(shí)現(xiàn)數(shù)據(jù)增量同步示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Java解析xml文件遇到特殊符號(hào)異常的情況(處理方案)
這篇文章主要介紹了Java解析xml文件遇到特殊符號(hào)&會(huì)出現(xiàn)異常的解決方案,實(shí)現(xiàn)思路很簡(jiǎn)單通過(guò)在讀取xml文件使用SAX解析前讀取reader,具體實(shí)現(xiàn)方法及示例代碼跟隨小編一起看看吧2021-05-05Java判斷是否為簡(jiǎn)體中文字符的實(shí)現(xiàn)方法
在應(yīng)用開(kāi)發(fā)中,判斷簡(jiǎn)體中文字符是一個(gè)重要但常被忽視的任務(wù),簡(jiǎn)體中文和繁體中文在字符上有顯著的區(qū)別,因此在某些場(chǎng)景下我們需要判斷輸入的文本是否為簡(jiǎn)體中文,本文將介紹如何使用Java進(jìn)行此判斷,并提供相應(yīng)的代碼示例,幫助開(kāi)發(fā)者更好地理解這一過(guò)程2024-09-09