Java 8跳过本次循环,继续执行以及跳出循环,终止循环的代码实例

在Java8之前,最开始使用for i 循环,很老旧,后来有了高级的for each 循环,然后这个跳出本次循环和跳出所有的for循环,都简单,稍微没见过的就是跳出多层for循环。

然后就是Java8出的foreach循环,这个循环里面,break和continue都不管用啦。需要使用return,这个只能跳过本次循环,还是会继续执行for循环的,那么怎么跳出这个Java8的foreach循环呢?

下面对所有的循环,都来了一次操作。

看看如何,跳出当前循环,继续执行;或者直接跳出for循环;或者跳出多层for循环。

package com.lxk.java8.lambdaTest;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
/**
 * 跳出for循环
 *
 * @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循环,然后继续执行。
  */
 private static void continueForeachJava8(int max, List<String> list) {
  list.forEach(s -> {
   if (s.length() >= max) {
    return;
   }
   System.out.println(s);
  });
 }
 /**
  * 跳出Java8的foreach循环
  * 还这没找到,怎么跳出
  */
 private static void breakForeachJava8(int max, List<String> list) {
  //这么做是不对的
  //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 跳过本次循环,继续执行。
  */
 private static void continueFor(int max, List<String> list) {
  for (String s : list) {
   if (s.length() >= max) {
    continue;
   }
   System.out.println(s);
  }
 }
 /**
  * break 是直接跳出for循环,不再继续执行for循环到代码了。
  */
 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循环,不再继续执行for循环到代码了。
  */
 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);
    }
   }
  }
 }
}

下面是上面的代码的运行结果,可以对照着看一下。

最后是对于:跳出Java8的lambda的foreach循环的说明,摘自某stackflow。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • Java中break、continue、return在for循环中的使用

    引言:在使用循环的时候,循环里面带有break.continue.return的时候经常弄混,今天特意整理了下,以待后用... for (int i = 1; i < 5; i++) { System.out.println("i==for=>"+i); while(i%2==0){ System.out.println("i==while==>"+i); break;//终止while循环,继续for后面的代码;(终止当前(while)循环,继续

  • Java三种循环求和方法

    注意:100之和为5050 普通for循环: public class HundredSum { public static void main(String[] args){ int x=0; for(int i=1;i<=100;i++){ x=x+i;//x+=i; } System.out.print(x); } } while循环: public class HundredSum { public static void main(String[] args){ int x=0; in

  • java队列实现方法(顺序队列,链式队列,循环队列)

    双向顺序队列ArrayDeque和双向链式队列LinkedList,JDK已经包含,在此略.ArrayDeque包括顺序栈和顺序队列,LinkedList包含链式栈和链式队列.ArrayDeque和LinkedList都是线程不安全的.PriorityQueue优先队列也在JDK. 1.顺序队列的实现 package lang; import java.io.Serializable; import java.util.Arrays; /** * @ClassName: ArrayQueue *

  • Java使用for循环解决经典的鸡兔同笼问题示例

    本文实例讲述了Java使用for循环解决经典的鸡兔同笼问题.分享给大家供大家参考,具体如下: for循环经典,鸡兔同笼问题 问题:鸡兔同笼,鸡兔一共35只.笼子里脚一共94只,请问分别有多少只鸡和兔? 思路:首先明确思路,鸡的数量*2加上兔子的数量*4等于脚的总数94,这是一个关键点, 代码很简单,但是关键的条件却要花很多时间去找,要是不明白的真的是很烦啊. 利用for循环列举出所有可能直到if满足条件, 列出表达式 鸡*2 加 兔*4 等于 脚总数94 ,这是if的判断条件,满足就可以直接输出

  • 对java for 循环执行顺序的详解

    如下所示: for(表达式1;表达式2;表达式3) { //循环体 } 先执行"表达式1",再进行"表达式2"的判断,判断为真则执行 "循环体",循环体执行完以后执行表达式3. 例如 for(int i=0;i<2;i++){ //TODO } 先执行 int i = 0; 然后 判断 i<2 然后执行函数体 最后执行i++ 然后轮回到判断i<2 int[] arr = new int[3]; int j; arr[0] = 1

  • Java 跳出递归循环问题解决办法

    使用异常跳出循环 1.如果方法体内含有需要抛出异常的对象,让方法直接抛出异常,不要在方法体内捕获 public void xxxx() throws Exception 2.如果方法体内不含有需要抛出异常的对象 class Test { static class StopMsgException extends RuntimeException { } public static void main(String args[]) { try { run(0); } catch (StopMsgE

  • 详谈Java枚举、静态导入、自动拆装箱、增强for循环、可变参数

    一.枚举简介 1.什么是枚举? 需要在一定范围内取值,这个值只能是这个范围内中的任意一个 现实场景:交通信号灯,有三种颜色,但是每次只能亮三种颜色里面的任意一个 2.使用一个关键字 enum enum Color3 { RED,GREEN,YELLOW; } *枚举的构造方法也是私有化的 *特殊枚举的操作 **在枚举类里面有构造方法 **在构造方法里面有参数,需要在每个实例上都写参数 **在枚举类里面有抽象方法 **在枚举的每个实例里面都重写这个抽象方法 3.枚举的api的操作 **name()

  • Java中增强for循环的实现原理和坑详解

    前言 引入增强for循环的原因:在JDK5以前的版本中,遍历数组或集合中的元素,需要先获得数组的长度或集合的迭代器,比较麻烦. JDK5中定义了一种新的语法----增强for循环,以简化此类操作.增强for循环只能用在数组或实现Iterable接口的集合上. 语法格式: for(变量类型 变量:需迭代的数组或集合){ } 在JAVA中,遍历集合和数组一般有以下三种形式: for (int i = 0; i < list.size(); i++) { System.out.print(list.g

  • Java编程几个循环实例代码分享

    有关Java循环的内容,编程中还是比较常用的,下面分享给大家几个循环的示例代码,练习一下. 1.循环输出1到100之间所有能被3或能被4整除的数. package com.hz.loop02; /** * 1.循环输出1到100之间所有能被3或能被4整除的数. * @author ztw * */ public class Practice01 { public static void main(String[] args) { for (int i=1;i<=100;i++){ //判断下是否

  • Java中循环冗余校验(CRC32)的实现

    前言 本文主要给大家介绍了关于Java实现循环冗余校验(CRC32)的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. CRC32简介 CRC校验实用程序库 在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段.在诸多检错手段中,CRC是最著名的一种.CRC的全称是循环冗余校验. CRC32检错能力极强,开销小,易于用编码器及检测电路实现.从其检错能力来看,它所不能发现的错误的几率仅为0.0047%以下.从性能上和开销上考虑,均远远优于奇偶校验及算术和校

  • Java编程之双重循环打印图形

    双重循环打印顶点在左上的直角三角形: public static void main(String[] args) { // TODO Auto-generated method stub int num=0; System.out.println("请输入直角三角形的行数:"); Scanner input=new Scanner(System.in); num=input.nextInt(); for(int i=1;i<=num;i++){ for(int k=1;k<

  • Java非静态成员变量之死循环(详解)

    1.非静态成员变量 当成员变量为非静态成员变量且对当前类进行实例化时,将会产生死循环 例子: public class ConstructorCls { private ConstructorCls obj=new ConstructorCls(); } public class TestC { public static void main(String[] args) { ConstructorCls c =new ConstructorCls(); } } 结果: Exception in

随机推荐