Java中List.forEach()方法使用
例子:
//使用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()方法使用相关推荐
- Java中list.forEach方法的使用示例-根据key获取对应的value
场景 获取了字典表对象的list,每个对象的属性有key和value. 比如对象1的key=1,value=公众号 对象2的key=2,value=霸道的程序猿 现在已经获取2怎么在这个对象的List ...
- java中的foreach语句
在java中,foreach语句是for语句的特殊简化版本,在遍历数组等方面为程序员提供了很大的方便,语法格式如下: for(元素变量 x : 遍历对象 obj) { 引用了x的java语句: } f ...
- 在Java中的foreach循环中调用remove
本文翻译自:Calling remove in foreach loop in Java [duplicate] This question already has an answer here: 这 ...
- JAVA中复制数组的方法
在JAVA里面,可以用复制语句"A=B"给基本类型的数据传递值,但是如果A,B是两个同类型的数组,复制就相当于将一个数组变量的引用传递给另一个数组;如果一个数组发生改变,那么 ...
- Java中的main()方法详解
源文作者:leizhimin 源文链接:http://lavasoft.blog.51cto.com/62575/53263 源文作者版权申明: 版权声明:原创作品,允许转载,转载时请务必以超链 ...
- 如何在java中调用js方法
[java] view plain copy/* * 加载脚本引擎,并在java中调用js方法 */ public void test2() { ScriptEngineManager manager ...
- java中构造方法和方法全面解析
java中构造方法和方法全面解析 我相信大多说人都对构造方法.方法不陌生,而且很了解,但我也相信有很多像我这样的没有一个很好很清晰很全面的认识,今天就把它整理如下,希望能给大家带来点方便与帮助,也希望 ...
- java中的dispose()方法
java中的dispose()方法 先来看看 JAVA 1.5 的帮助文档的原文 - dispose - public void dispose() ****** 释放由此 Window.其子组件及其 ...
- java 重写方法 访问权限_为何Java中子类重写方法的访问权限不能低于父类中权限(内含里氏替换原则)...
为何Java中子类重写方法的访问权限不能低于父类中权限 因为 向上转型及Java程序设计维护的原因 例: 假设一个父类A 拥有的方法public void setXXX(){}可以被其他任意对象调用这 ...
最新文章
- python3--htmltestrunner 日志显示_实时日志:Serverless Python 运行时支持日志实时输出...
- java uppercase方法_java-方法引用
- AIX安装中文语言包
- css 实现居中的五种方式
- oracle中将两个字段合并在一起_日期合并
- k8s学习: 部署动态 pvc(nfs-subdir-external-provisioner)
- 最新最全 VSCODE 插件推荐(2022版)
- 在实时控制系统中使用传感器优化数据可靠性的3个技巧
- 如何开发Android手表界面ui,20款神奇的UI智能手表界面设计欣赏
- 微软解决Office兼容性问题 补丁包 转帖之www.it.com.cn
- CF1428F-Fruit Sequences
- java做橡皮擦效果_顶风作案,html5 canvas实现橡皮擦功能,擦了就知道有惊喜了...
- MySQL 用户管理 - 添加用户、授权、删除用户
- 石墨笔记,熊掌记和 Effie 哪个更适合 SMZDM 开箱评论者?
- good man or bad man?
- 非常棒的数据结构与算法视频
- 互联网的盈利方式 赚钱方式
- discus mysql 性能_百万纪录级mysql数据库以及discuz!优化
- LiLi-OM: 走向高性能固态激光雷达惯性里程计和建图系统
- C++Primer5th 第六章 函数
热门文章
- pytorch 画loss曲线_Pytorch练习amp;#8211;绘制Loss曲线 - 易采站长站
- rabbitmq多个消费者同时接收_提升RabbitMQ消费速度的一些实践
- python修饰符号的使用_Python 函数修饰符(装饰器)的使用
- React 从入门到进阶之路(二)
- 3-51单片机ESP8266学习-AT指令(学会刷固件)
- leetcode- 225 Implement Stack using Queues
- java初学者笔记总结day7
- LeetCode--path sum ii
- erl_0016 《硝烟中的erlang》 读书笔记003 “error_logger 爆炸”
- 自定义配置节 Section