例子:
//使用com.google.guava包创建集合
List 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);}});

forEach()的底层实现:
public interface Iterable {

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循环了。

Java中List.forEach()方法使用相关推荐

  1. Java中list.forEach方法的使用示例-根据key获取对应的value

    场景 获取了字典表对象的list,每个对象的属性有key和value. 比如对象1的key=1,value=公众号 对象2的key=2,value=霸道的程序猿 现在已经获取2怎么在这个对象的List ...

  2. java中的foreach语句

    在java中,foreach语句是for语句的特殊简化版本,在遍历数组等方面为程序员提供了很大的方便,语法格式如下: for(元素变量 x : 遍历对象 obj) { 引用了x的java语句: } f ...

  3. 在Java中的foreach循环中调用remove

    本文翻译自:Calling remove in foreach loop in Java [duplicate] This question already has an answer here: 这 ...

  4. JAVA中复制数组的方法

     在JAVA里面,可以用复制语句"A=B"给基本类型的数据传递值,但是如果A,B是两个同类型的数组,复制就相当于将一个数组变量的引用传递给另一个数组;如果一个数组发生改变,那么 ...

  5. Java中的main()方法详解

    源文作者:leizhimin    源文链接:http://lavasoft.blog.51cto.com/62575/53263 源文作者版权申明: 版权声明:原创作品,允许转载,转载时请务必以超链 ...

  6. 如何在java中调用js方法

    [java] view plain copy/* * 加载脚本引擎,并在java中调用js方法 */ public void test2() { ScriptEngineManager manager ...

  7. java中构造方法和方法全面解析

    java中构造方法和方法全面解析 我相信大多说人都对构造方法.方法不陌生,而且很了解,但我也相信有很多像我这样的没有一个很好很清晰很全面的认识,今天就把它整理如下,希望能给大家带来点方便与帮助,也希望 ...

  8. java中的dispose()方法

    java中的dispose()方法 先来看看 JAVA 1.5 的帮助文档的原文 - dispose - public void dispose() ****** 释放由此 Window.其子组件及其 ...

  9. java 重写方法 访问权限_为何Java中子类重写方法的访问权限不能低于父类中权限(内含里氏替换原则)...

    为何Java中子类重写方法的访问权限不能低于父类中权限 因为 向上转型及Java程序设计维护的原因 例: 假设一个父类A 拥有的方法public void setXXX(){}可以被其他任意对象调用这 ...

最新文章

  1. python3--htmltestrunner 日志显示_实时日志:Serverless Python 运行时支持日志实时输出...
  2. java uppercase方法_java-方法引用
  3. AIX安装中文语言包
  4. css 实现居中的五种方式
  5. oracle中将两个字段合并在一起_日期合并
  6. k8s学习: 部署动态 pvc(nfs-subdir-external-provisioner)
  7. 最新最全 VSCODE 插件推荐(2022版)
  8. 在实时控制系统中使用传感器优化数据可靠性的3个技巧
  9. 如何开发Android手表界面ui,20款神奇的UI智能手表界面设计欣赏
  10. 微软解决Office兼容性问题 补丁包 转帖之www.it.com.cn
  11. CF1428F-Fruit Sequences
  12. java做橡皮擦效果_顶风作案,html5 canvas实现橡皮擦功能,擦了就知道有惊喜了...
  13. MySQL 用户管理 - 添加用户、授权、删除用户
  14. 石墨笔记,熊掌记和 Effie 哪个更适合 SMZDM 开箱评论者?
  15. good man or bad man?
  16. 非常棒的数据结构与算法视频
  17. 互联网的盈利方式 赚钱方式
  18. discus mysql 性能_百万纪录级mysql数据库以及discuz!优化
  19. LiLi-OM: 走向高性能固态激光雷达惯性里程计和建图系统
  20. C++Primer5th 第六章 函数

热门文章

  1. pytorch 画loss曲线_Pytorch练习amp;#8211;绘制Loss曲线 - 易采站长站
  2. rabbitmq多个消费者同时接收_提升RabbitMQ消费速度的一些实践
  3. python修饰符号的使用_Python 函数修饰符(装饰器)的使用
  4. React 从入门到进阶之路(二)
  5. 3-51单片机ESP8266学习-AT指令(学会刷固件)
  6. leetcode- 225 Implement Stack using Queues
  7. java初学者笔记总结day7
  8. LeetCode--path sum ii
  9. erl_0016 《硝烟中的erlang》 读书笔记003 “error_logger 爆炸”
  10. 自定义配置节 Section