Java8中的foreach跳出循環break/return



java8中跳出循環不能使用break?
通過測試發現:

對於java8中的特殊寫法lamada表達式中,不能使用break,會提示錯誤;
java8中使用return,會跳出當前循環,繼續下一次循環,作用類似continue;
java8中使用foreach,但是不是lamada表達式寫法,可以正常使用break或者return,可以直接跳出循環.

public class TestForEachJava8 {

    public static void main(String[] args) {
        
        
        System.out.println("c-------------------");
        
        //lamada表達式中foreach使用break
        List<String> c = Arrays.asList("6666", "7777", "8888", "9999");
        c.stream().forEach(str ->{
            if("8888".equals(str)){
                return; //跳出當前循環,繼續下一輪
            }
            System.out.println(str);
            
        });
        
        System.out.println("d-------------------");
        
        List<String> d = Arrays.asList("6666", "7777", "8888", "9999");
        d.stream().forEach(str ->{
            System.out.println(str);
            if("8888".equals(str)){
                break; //IDE提示錯誤:break cannot be used outside of a loop or a switch
            }
            
        });
        System.out.println("a-------------------");
        List<String> a  = new ArrayList<>();
        a.add("1111");
        a.add("2222");
        a.add("3333");
        a.add("4444");
        for(String str:a){
            if("3333".equals(str)){
                break;   //正常跳出循環
            }
            System.out.println(str);
        }
        
        System.out.println("b-------------------");
        
        List<String> b  = new ArrayList<>();
        b.add("1111");
        b.add("2222");
        b.add("3333");
        b.add("4444");
        for(String str:b){
            if("3333".equals(str)){
                return; //也能跳出循環
            }
            System.out.println(str);
        }
        
    }

}


輸出:

c-------------------
6666
7777
9999
d-------------------
6666
7777
8888
9999
a-------------------
1111
2222
b-------------------
1111
2222





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM