java forEach使用

foreach 是 Java 中的一种语法糖,目的是方便程序员开发和提高性能。其实就是编译期间以特定的字节码或特定的方式来对这些语法进行处理。

1.普通数组forEach用法

对于数组,foreach 循环实际上还是用的普通的 for 循环,怎么说foreach 循环就是for 循环

int[] arr= {1,2,3,4,5}
//forEach写法(效果跟下面同等)
for(int i:arr)System.out.println("数组元素:"+i);//普通for循环
for(int i=0;i<arr.length;i++) System.out.println("数组元素:"+arr[i]);

2.集合类forEach用法

对于集合,foreach 循环实际上是用的 iterator 迭代器迭代,写法也一样。

ArrayList<Integer> arrlist = new ArrayList<Integer>();
arrlist.add(1);
arrlist.add(2);
arrlist.add(3);
//forEach用法
for(Integer a:arrlist)System.out.println("集合数据:"+a);//迭代器循环
for(Iterator<Integer> it = arrlist.iterator();it.hasNext();)System.out.println("集合数据:"+it.next());

3.forEach+lambda

这里调用ArrayList类的forEach方法,然后传入lambda表达式

List<String> items = new ArrayList<>();items.add("A");items.add("B");items.add("C");//lambd+forEach方法items.forEach(item->System.out.println("集合数据:"+item));//forEach方法来自Iterable接口其他类重新//这里是ArrayList重写forEach方法源码public void forEach(Consumer<? super E> action) {Objects.requireNonNull(action);final int expectedModCount = modCount;final Object[] es = elementData;final int size = this.size;for (int i = 0; modCount == expectedModCount && i < size; i++)action.accept(elementAt(es, i));if (modCount != expectedModCount)throw new ConcurrentModificationException();}

接口方法描述:

default void forEach(Consumer<? super T> action)对Iterable的每个元素执行给定的操作,直到所有元素都被处理或动作引发异常。 除非实现类另有规定,否则按照迭代的顺序执行操作(如果指定了迭代顺序)。 动作抛出的异常被转发给呼叫者。
实现要求:
默认实现的行为如下: for (T t : this) action.accept(t);

4.其他调用方法

//System.out::println这个到底是什么东东,请参考下面博客
items.forEach(System.out::println);

博客:https://blog.csdn.net/nrsc272420199/article/details/84727347

java forEach使用相关推荐

  1. java foreach 循环原理

    2019独角兽企业重金招聘Python工程师标准>>> java foreach 语法是在jdk1.5时加入的新特性,主要是当作for语法的一个增强,那么它的底层到底是怎么实现的呢? ...

  2. Java forEach中 Lambda Expr中的 final变量要求

    https://my.oschina.net/wadelau/blog/1859419 Java forEach中 Lambda Expr中的 final变量要求 Java8闭包 闭包是一个函数在创建 ...

  3. java foreach unsupport major minor version 52.0

    1.java foreach 格式 for(type var :arr) 2.unsupport major minor version 52.0  右击选择properties-->Java ...

  4. Java foreach 遍历List的简单使用

    Java foreach 遍历List的简单使用 首先在数据库中查询出来的结果存在List<实体类>里. 使用方法概述: for(数据类型:数据源){要在循环里执行的代码; } List& ...

  5. java foreach delete_Java CopyOnWriteArrayList forEach()用法及代码示例

    CopyOnWriteArrayList的forEach()方法为Iterable的每个元素执行给定的操作,直到已处理完所有元素或该操作引发异常. 用法: public void forEach (C ...

  6. java foreach order_Java 8流中的forEach vs forEachOrdered

    我知道这些方法的执行顺序不同,但在所有测试中,我都无法实现不同的执行顺序. 例子: System.out.println("forEach Demo"); Stream.of(&q ...

  7. java foreach 删除_为什么java不要在foreach循环里进行元素的remove/add操作

    首先,这涉及多线程操作,Iterator是不支持多线程操作的,List类会在内部维护一个modCount的变量,用来记录修改次数 举例:ArrayList源码 protected transient ...

  8. java foreach 原理_一不小心就让Java开发者踩坑的failfast是个什么鬼?

    1 什么是fail-fast 首先我们看下维基百科中关于fail-fast的解释: 在系统设计中,快速失效系统一种可以立即报告任何可能表明故障的情况的系统.快速失效系统通常设计用于停止正常操作,而不是 ...

  9. java foreach用法_Java十大简单性能优化

    以下是Java中最容易进行的10个性能优化: 1.使用StringBuilder 这几乎是所有Java代码中的默认设置.尽量避免+操作员.当然,您可能会争辩说它StringBuilder无论如何都是语 ...

最新文章

  1. es 时间字段聚合_Elasticsearch 聚合(aggregation)查询返回所有
  2. [Linux学习]虚拟机系统与实际系统共享文件的方式
  3. SAP CRM里是如何检测一个BP是否存在的 - FM BP_CENTRALPERSON_GET
  4. JavaScript中Object.keys、Object.getOwnPropertyNames区别
  5. 插件五之滚动条jquery.slimscroll.js
  6. 学Web前端开发需要哪些基础?零基础小白该怎么入行?
  7. linux底层文件io,学习Rust 文件与 IO
  8. 全球股市下跌潮蔓延 多个国家地区拟出手救市
  9. Ubuntu16.04LTS安装XMind8并创建运行图标
  10. 怎么通过dd命令分析文件系统
  11. RABBITMQ集群及HA、LB
  12. Sensor信号输出YUV、RGB、RAW DATA、JPEG 4种方式区别---转
  13. .asd文件如何恢复
  14. JAVA边界布局和setbound_深入探究frame和bounds的区别以及setbounds使用
  15. 本地计算机 feifei pc,局域网中其它计算机对共享打印机的访问方法
  16. nacos怎么修改服务分组_【Java】nacos服务注册如何配置分组?
  17. css:绘制一角是圆角的三角形
  18. 纯前端,js导出页面为pdf
  19. Python split()函数的用法
  20. useEffect-副作用函数的返回值-清理副作用的写法

热门文章

  1. 09.15,一维数组,冒泡排序
  2. Expert Shell Scripting
  3. 从程序详解拒绝服务***
  4. ASP.NET状态管理
  5. MongoDB 一个基于分布式文件存储的数据库
  6. 百度技术研发笔试题目1
  7. python与java、php、go的优势对比
  8. IDEA弹出'xxx' is not allowed to run in parallel. Would you like to stop the running one?
  9. Redis之Hash数据结构
  10. Linux的tree