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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 分布式拒绝服务攻击是如何实现拒绝服务的_分布式拒绝服务攻击原理是什么

    分布式拒绝服务攻击是如何实现拒绝服务的_分布式拒绝服务攻击原理是什么摘要:拒绝服务(DoS)攻击是指攻击者通过某种手段,有意地造成计算机或网络不能正常运转从而不能向合法用户提供所需要的服务或者使得服务质量降低。分布式拒绝服务(DDoS)攻击则是指处于不同位置的多个攻击者同时向一个或数个目标发起攻击,或者一个或多个攻击者控制了位于不同位置的多台机器(称为傀儡机)并利用这些机器对受害者同时实施攻击。

    2022年10月30日
  • matlab griddata外插,matlab griddata方法使用介绍

    matlab griddata外插,matlab griddata方法使用介绍griddata的作bai用是数据网格化。其一般用du法格式为ZI=griddata(x,y,z,XI,YI)%x、y、z——数据,XI,YI——X-Y平面上的zhi网格数据应用实例:dao>>x=rand(100,1)*4-2;y=rand(100,1)*4-2;>>z=x.*exp(-x.^2-y.^2);>>ti=-2:.2…

    2022年5月9日
  • 常见逻辑漏洞总结「建议收藏」

    常见逻辑漏洞总结「建议收藏」kaixinyufeng博客园首页新随笔联系订阅管理Web安全测试中常见逻辑漏洞解析(实战篇)Web安全测试中常见逻辑漏洞解析(实战篇)简要:越权漏洞是比较常见的漏洞类型,越权漏洞可以理解为,一个正常的用户A通常只能够对自己的一些信息进行增删改查,但是由于程序员的一时疏忽,对信…

    2022年5月20日
  • 简单的三数排序,由小到大

    简单的三数排序,由小到大

    2021年7月15日
  • currentstyle 织梦_织梦导航高亮标签currentstyle调用自定义字段的方法

    currentstyle 织梦_织梦导航高亮标签currentstyle调用自定义字段的方法用织梦仿站时候,经常会使用currentstyle标签高亮当前的栏目,具体代码为:currentstyle=’~typename~’但是在实际建站操作中经常调用自定义字段,大家会发现在用currentstyle的时候读取不出自定义字段的内容了。这时候,我们就需要对织梦进行二次开发,以满足我们的需要。1、我们打开/include/taglib/channel.lib.php文件,在136行找到:$r…

    2022年7月14日
  • 操作系统知识点整理(完整版)

    操作系统知识点整理(完整版)第一章操作系统概述1)一个完整的计算机系统是由硬件系统和软件系统两大部分组成2)计算机软件是指程序和与程序相关的文档的集合3)按功能可把软件分为“系统软件”和“应用软件”两部分系统软件:操作系统语言处理程序,数据库管理系统应用软件:各种管理软件,用于工程计算的软件包,辅助设计软件4)通常把未配置任何软件的计算机称为“裸机”5)操作系统可以被看作是计算机系统的核心,统管…

    2022年6月25日

发表回复

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

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