1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Java8 Lambda 表達式中的 forEach 如何提前終止?

        共 1240字,需瀏覽 3分鐘

         ·

        2022-06-09 07:59

        1.情景展示

        如上圖所示,我們想要終止for循環(huán),使用return。

        執(zhí)行結(jié)果如下:

        我們可以看到,只有趙六沒被打印出來,后續(xù)的數(shù)組元素依舊被執(zhí)行了。

        也就是說,關(guān)鍵字"return",在這里執(zhí)行的效果相當于普通for循環(huán)里的關(guān)鍵詞continue"。

        2.原因分析

        我們知道,在普通for循環(huán)里面,想要提前結(jié)束(終止)循環(huán)體使用"break";

        結(jié)束本輪循環(huán),進行下一輪循環(huán)使用"continue";

        另外,在普通for里,如果使用"return",不僅強制結(jié)束for循環(huán)體,還會提前結(jié)束包含這個循環(huán)體的整個方法。

        而在Java8中的forEach()中,"break"或"continue"是不被允許使用的,而return的意思也不是原來return代表的含義了。

        我們來看看源碼:

        forEach(),說到底是一個方法,而不是循環(huán)體,結(jié)束一個方法的執(zhí)行用什么?當然是return啦;

        java8的forEach()和JavaScript的forEach()用法是何其的相似,感興趣的可以去了解下(在文末)。

        Java不是萬能的,不要再吐槽它垃圾了。

        3.解決方案

        方案一:使用原始的foreach循環(huán)

        使用過eclipse的老鐵們應(yīng)該知道,當我們輸入:foreach,再按快捷鍵:Alt+/,就會出現(xiàn)foreach的代碼提示。

        如上圖所示,這種格式的for循環(huán)才是真正意義上的foreach循環(huán)。

        在idea中輸入,按照上述操作是不會有任何代碼提示的,那如何才能在idea中,調(diào)出來呢?

        for循環(huán)可以提前終止。

        方式一:break
        方式二:return(不推薦使用)
        方案三:拋出異常

        我們知道,要想結(jié)束一個方法的執(zhí)行,正常的邏輯是:使用return;

        但是,在實際運行中,往往有很多不突發(fā)情況導致代碼提前終止,比如:空指針異常,其實,我們也可以通過拋出假異常的方式來達到終止forEach()方法的目的。

        如果覺得這種方式不友好,可以再包裝一層。

        這樣,就完美了。

        這里,需要注意的一點是:要確保你forEach()方法體內(nèi)不能有其它代碼可能會拋出的異常與自己手動拋出并捕獲的異常一樣;

        否則,當真正該因異常導致代碼終止的時候,因為咱們手動捕獲了并且沒做任何處理,豈不是搬起石頭砸自己的腳嗎?

        寫在最后

        哪位大佬如若發(fā)現(xiàn)文章存在紕漏之處或需要補充更多內(nèi)容,歡迎留言?。?!


        來源:https://blog.csdn.net/weixin_39597399


        END


        推薦閱讀

        一鍵生成Springboot & Vue項目!【畢設(shè)神器】

        Java可視化編程工具系列(一)

        Java可視化編程工具系列(二)


        順便給大家推薦一個GitHub項目,這個 GitHub 整理了上千本常用技術(shù)PDF,絕大部分核心的技術(shù)書籍都可以在這里找到,

        GitHub地址:https://github.com/javadevbooks/books

        電子書已經(jīng)更新好了,你們需要的可以自行下載了,記得點一個star,持續(xù)更新中..



        瀏覽 34
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            奶湿摸爽呻吟视频www免费 | 俺来俺去 | 国产偷自视频一区二区三区 | 内射学生妹 | 乳情欲乱办公室主任 | 按摩房激情hd欧美 | 黄色动漫免费 | 啊灬啊灬啊灬快灬猛男 | 成人免费A片在线观看直播96 | 国产成人精品无码一区二区蜜柚 |