2019独角兽企业重金招聘Python工程师标准>>>

openJDK的版本是openJDK8,如何下载openJDK,请参考我的这篇博客。

这篇内容很简单。

1.List的forEach如何实现

List-1 List的forEach例子

@Test
public void test1() {List<Integer> integers = Arrays.asList(1, 4, 7, 9, 20, 3, 5, -1, -7, 10);integers.forEach(i->{System.out.println(i);});
}

Arrays.asList中底层上是ArrayList,forEach的实现是在接口java.lang.Iterable中,如下List-2所示,JDK8中interface是可以有实现方法的(JDK的特性),由于该方法在Iterable中,所以直接用迭代的方式遍历整个List,之后对每个元素,调用Consumer.accept(T)方法。

List-2 Iterable的forEach方法

/*** Performs the given action for each element of the {@code Iterable}* until all elements have been processed or the action throws an* exception.  Unless otherwise specified by the implementing class,* actions are performed in the order of iteration (if an iteration order* is specified).  Exceptions thrown by the action are relayed to the* caller.** @implSpec* <p>The default implementation behaves as if:* <pre>{@code*     for (T t : this)*         action.accept(t);* }</pre>** @param action The action to be performed for each element* @throws NullPointerException if the specified action is null* @since 1.8*/
default void forEach(Consumer<? super T> action) {Objects.requireNonNull(action);for (T t : this) {action.accept(t);}
}

看下面的图1,List接口继承了Iterable接口:

图1 List的类继承图

转载于:https://my.oschina.net/u/2518341/blog/2052146

openJDK之lambda——List的forEach如何实现的相关推荐

  1. Lambda表达式比较foreach使用

    ArrayList<String> arrayList = new ArrayList<>();  new一个集合 //for 循环 for (String list : ar ...

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

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

  3. Java SE 8新功能介绍:Lambda的遍历,过滤,处理集合和方法增强

    在" Java SE 8新功能导览"系列的这篇文章中,我们将深入解释并探索代码,以了解如何使用lambda表达式和方法引用 遍历集合 ,并使用谓词接口过滤它们,实现默认方法在接口中 ...

  4. Java8 详解Lambda表达式

    1. 引言 java.util.function包 我们发现使用lambda表达式的时候,经常需要定义一些接口用来辅助我们的编码,这样就会使得本应轻量级的lambda表达式又变得重量级.那是否存在解决 ...

  5. Java 8 Lambda 表达式详解

    版权声明:本文由吴仙杰创作整理,转载请注明出处:https://segmentfault.com/a/1190000009186509 1. 引言 在 Java 8 以前,若我们想要把某些功能传递给某 ...

  6. Java8 Lambda不仅仅只是语法糖

    前端时间,项目升级到jdk1.8,尝试了下Lambda写法:     public static void main(String[] args) {         List<String&g ...

  7. 这是一个有趣的问题,Java 8 Lambda 表达式被编译成了什么?

    在了解了Java 8 Lambda的一些基本概念和应用后, 我们会有这样的一个问题: Lambda表达式被编译成了什么? 这是一个有趣的问题,涉及到JDK的具体的实现.本文将介绍OpenJDK对Lam ...

  8. Java8 之 lambda 表达式、方法引用、函数式接口、默认方式、静态方法

    今天我来聊聊 Java8 的一些新的特性,确实 Java8 的新特性的出现,给开发者带来了非常大的便利,可能刚刚开始的时候会有点不习惯的这种写法,但是,当你真正的熟悉了之后,你一定会爱上这些新的特性的 ...

  9. Java 8 forEach 示例

    本篇文章意在简单说明在java 8 中使用 foreach 语法循环一个 Map 和 List 对象. 1. Java 8 forEach 循环 Map对象 1.1 Java 8 以前这样循环一个Ma ...

最新文章

  1. 学习结构[记录]类型(9) - 变体结构
  2. 剑桥少儿英语预备级教案(上) unit15 I can draw it.
  3. 用VC++实现通用的报表控件
  4. JavaScript 表单编程
  5. python dicom 器官分割_python+opencv阈值分割
  6. redius和oracle怎么配置,求个 交换机radius 详细配置案例
  7. java生命小游戏_Java修炼——飞机生存小游戏
  8. java修改list中对象的值_Java中List集合的一点总结
  9. 20170721L08-02-02老男孩Linux运维实战培训初级第八节课课前【上机实战】考试讲解...
  10. es 中关于 term,match, text, keyword
  11. Unity的DrawCall
  12. 最常用计算机文件后缀名,windows系统文件后缀(扩展名)简单介绍,电脑知识普及...
  13. MongoDB 下载和安装
  14. html5如何添加图片菜鸟教程,菜鸟入门教程 HTML5的常见用法
  15. 【重点推荐】PS常用快捷键总结【个人定制版】
  16. 将图片转化成SVG格式(亲测可行)
  17. UG476 GT Transceivers文档翻译和自身理解
  18. 抢占1000万辆级别市场风口,这家国产Tier 1定点车型已超20款
  19. 换电脑后如何快速同步原先设备上vscode的插件
  20. 谈商业软件的发展趋势

热门文章

  1. Windows10系统的使用小技巧四 —— 剪贴板历史记录
  2. Python中遍历整个列表及注意点(参考书籍Python编程从入门到实践)
  3. 【听说是线段树】bzoj1012 [JSOI2008]最大数maxnumber
  4. 常用网站--前端开发类+网页设计类+平面素材类+flash类
  5. ASP.NET程序中常用的三十三种代码 〔转〕
  6. linux c编程项目实例,Linux c编程实例_例子
  7. 嵌入式linux 用虚拟机,如何制作嵌入式Linux虚拟机
  8. oracle timestamp约束,java.lang.ClassCastException:oracle.sql.TIMESTAMP不能转换为java.sql.Timestamp...
  9. piczoom兼容性问题_浏览器不兼容原因及解决办法
  10. js json编辑器_程序员必备编辑器 —— Visual Studio Code