zoukankan      html  css  js  c++  java
  • 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
    
    

    TODO:foreach…

  • 相关阅读:
    C++学习 之 程序的组成部分(部分知识笔记)
    debian下重装mysql
    CGI 环境变量
    boost的libboost_system问题
    debian下使用shell脚本时出现了 declare:not found 解决方法
    编译的时候出现"/usr/bin/ld: cannot find -lz
    glibc升级,解决glib版本过低的问题
    ubuntu彩色图形界面
    (转)http://blog.chinaunix.net/uid-8363656-id-2031644.html CGI 编写
    linux安装JSONCPP
  • 原文地址:https://www.cnblogs.com/DiZhang/p/12544794.html
Copyright © 2011-2022 走看看