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

 更新时间:2018年10月24日 10:29:54   作者:李学凯  
今天小编就为大家分享一篇关于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。

总结

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

相关文章

  • 零基础入门SpringMVC拦截器的配置与使用

    零基础入门SpringMVC拦截器的配置与使用

    Spring MVC 的拦截器(Interceptor)与 Java Servlet 的过滤器(Filter)类似,它主要用于拦截用户的请求并做相应的处理,通常应用在权限验证、记录请求信息的日志、判断用户是否登录等功能上。本文将代码演示和文字描述详解拦截器的原理与使用
    2022-04-04
  • Java生产者消费者的三种实现方式

    Java生产者消费者的三种实现方式

    这篇文章主要介绍了Java生产者消费者的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • SpringCloud LoadBalancerClient 负载均衡原理解析

    SpringCloud LoadBalancerClient 负载均衡原理解析

    LoadBalancerClient 是 SpringCloud 提供的一种负载均衡客户端,Ribbon 负载均衡组件内部也是集成了 LoadBalancerClient 来实现负载均衡,本文给大家深入解析 LoadBalancerClient 接口源码,感兴趣的朋友跟随小编一起看看吧
    2022-02-02
  • Java并发编程之阻塞队列深入详解

    Java并发编程之阻塞队列深入详解

    这篇文章主要介绍了详解Java阻塞队列(BlockingQueue)的实现原理,阻塞队列是Java util.concurrent包下重要的数据结构,是一种特殊的队列,需要的朋友可以参考下
    2021-10-10
  • Java日期处理工具类DateUtils详解

    Java日期处理工具类DateUtils详解

    这篇文章主要为大家详细介绍了Java日期处理工具类DateUtils的相关代码,包含日期和时间常用操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Java后端向前端返回文件流实现下载功能

    Java后端向前端返回文件流实现下载功能

    后端可以使用Java中servlet提供的HttpServletResponse,核心步骤是要设置响应的数据类型,设置为某一类文件类型或二进制格式,以及响应头,然后用ServletOutputStream将文件以流的形式发送到前端,本文介绍Java后端向前端返回文件流实现下载功能,感兴趣的朋友一起看看吧
    2023-12-12
  • Java继承方法重写实现原理及解析

    Java继承方法重写实现原理及解析

    这篇文章主要介绍了Java继承方法重写实现原理及解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Java中初始化List集合的6种方式详解

    Java中初始化List集合的6种方式详解

    这篇文章主要介绍了Java中初始化List集合的6种方式详解,List 是 Java 开发中经常会使用的集合,在使用List时需要进行初始化操作,今天我们就来看一下常用的几种list集合初始化方式,需要的朋友可以参考下
    2023-10-10
  • 解决SpringBoot跨域的三种方式

    解决SpringBoot跨域的三种方式

    前后端分离是目前的趋势,解决跨域问题也是老生常谈的话题了,我们了解一下什么是域和跨域。域:协议 + 域名 + 端口;三者完全相同则为同域,反之有其一不同均为不同域。跨域请求:当前【发起请求】的域和【请求指向】的域属于不同域时,该次请求称之为跨域请求
    2021-06-06
  • mybatis查询oracle long类型的踩坑记录

    mybatis查询oracle long类型的踩坑记录

    这篇文章主要介绍了mybatis查询oracle long类型的踩坑记录,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03

最新评论