Java list foreach_java的foreach

Java list foreach_java的foreach例子://使用com.google.guava包创建集合List<String>list=Lists.newArrayList(“a”,”b”,”c”,”d”);//1、正常遍历list.forEach(item->System.out.println(item));//2、根据条件遍历list.forEach…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

例子:

    // 创建集合
    List<String> list =Lists.newArrayList("a","b","c","d");

    //1、正常遍历
    list.forEach(item->System.out.println(item));
    //2、条件遍历
    list.forEach(item->{
        if("b".equals(item)){
            System.out.println(item);
        }

底层实现:

public interface Iterable<T> {

    Iterator<T> iterator();

    default void forEach(Consumer<? super T> action) {
        Objects.requireNonNull(action);
        for (T t : this) {
            action.accept(t);
        }
    }

    default Spliterator<T> spliterator() {
        return Spliterators.spliteratorUnknownSize(iterator(), 0);
    }

       从源码中可以看到:forEach()方法是Iterable<T>接口中的一个方法。Java容器中,所有的Collection子类(List、Set)会实现Iteratable接口以实现foreach功能。forEach()方法里面有个Consumer类型,它是Java8新增的一个消费型函数式接口,其中的accept(T t)方法代表了接受一个输入参数并且无返回的操作。

小结:

        foreach相对于for循环,代码减少了,但是foreach依赖IEnumerable(IEnumerable是一个接口,它定义一个方法GetEnumerator,它返回一个IEnumerator接口,这允许只读访问一个集合,然后实现IEnumerable的集合可以与for-each语句一起使用)。在运行的时候效率低于for循环。当然了,在处理不确定循环次数的循环,或者循环次数需要计算的情况下,使用foreach比较方便。而且foreach的代码经过编译系统的代码优化后,和for循环的循环类似。可以说,foreach语句是for语句的特殊简化版本,在遍历数组、集合方面,foreach为开发人员提供了极大的方便。在复杂的循环设计时,还是应该使用for循环更加的灵活。

  •  如果只是遍历集合或者数组,用foreach好些,快些。
  •  如果对集合中的值进行修改,确定循环次数就要用for循环了。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189498.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • html表格菜鸟教程_怎么把excel表格导入word

    html表格菜鸟教程_怎么把excel表格导入wordHTML基础之表格文章目录HTML基础之表格1.表格的定义2.表格的标签3.单元格边框(border)4.合并单元格4.1合并行单元格(colspan)4.2合并列单元格(rowspan)5.表格格式设置5.1单元格的对齐(align)(居中,左对齐,右对齐)5.2.背景色&图片(bgcolor&background)5.2.1单元格背景色&图片5.2.2表格背景色&图片5.3单元格的边距(cellpadding)5.4单元格间的距离(cel

    2025年12月7日
    3
  • redisson和jedis区别_redisson和redis区别

    redisson和jedis区别_redisson和redis区别Redis可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串)、List(列表)、Set(集合)、Hash(散列)和Zset(有序集合)。redis与spring的整合一般分为spring-data-redis整合和jedis整合,先看看两者的区别1、引用的依赖不同:spring-data-redis使用的依赖如下: <dependency> <groupId>org.springframework..

    2025年5月28日
    5
  • 【微信公众平台开发】借用微信内置图片浏览功能

    【微信公众平台开发】借用微信内置图片浏览功能

    2021年11月24日
    40
  • NHibernate教程

    NHibernate教程 一、NHibernate简介在今日的企业环境中,把面向对象的软件和关系数据库一起使用可能是相当麻烦、浪费时间的。NHibernate是一个面向.Net环境的对象/关系数据库映射工具。对象/关系数据库映射(object/relationalmapping(ORM))这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。NHibernate除了能将一张表映射为

    2022年7月12日
    21
  • Kotlin vs Java | Java和Kotlin之间的10个区别

    Kotlin vs Java | Java和Kotlin之间的10个区别Kotlin与JavaJava是一种通用的,面向对象的编程语言。Java程序或应用程序将在JVM(Java虚拟机)中执行。它是一种独立的编程语言,可让您在所有支持Java的平台上运行相同的代码。Kotlin是一种开放源代码,通用,静态类型的编程语言。它结合了面向JVM和Android的面向对象和功能性编程功能。它对开发服务器端应用程序更有用,并且允许用户编写简短而有意义的代…

    2022年7月7日
    24
  • IE中出现 “Stack overflow at line” 错误的解决方法

    IE中出现 “Stack overflow at line” 错误的解决方法在做网站时遇到一个问题,网站用的以前的程序,在没有改过什么程序的情况下,页面总是提示Stackoverflowatline0的错误,而以前的网站都正常没有出现过这种情况,在网上找了一下解决办法

    2022年7月1日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号