随笔分类 -  深入理解Java函数式编程

《深入理解Java函数式编程》系列文章
摘要:本系列文将帮助你理解Java函数式编程的用法、原理。Java 8已经发行两年多,但很多人仍然在使用JDK7。对企业来说,技术上谨慎未必是坏事,但对个人学习而言,不去学习新技术就很可能被技术抛弃。Java 8一个重要的变更是引入函数式编程和Lambda表达式(lambda expression),这听起来似乎很牛,有种我虽然不知道Lambda表达式是什么,但我仍然觉得很厉害的感觉。 阅读全文
posted @ 2017-04-18 18:53 CarpenterLee 阅读(18527) 评论(7) 推荐(6) 编辑
Java Stream API性能测试
摘要:实验的结果可以总结如下: 对于简单操作,比如最简单的遍历,Stream串行API性能明显差于显示迭代,但并行的Stream API能够发挥多核特性。 对于复杂操作,Stream串行API性能可以和手动实现的效果匹敌,在并行执行时Stream API效果远超手动实现。 所以,如果出于性能考虑,1. 对于简单操作推荐使用外部迭代手动实现,2. 对于复杂操作,推荐使用Stream API, 3. 在多核情况下,推荐使用并行Stream API来发挥多核优势,4.单核情况下不建议使用并行Stream API。 阅读全文
posted @ 2017-04-07 08:12 CarpenterLee 阅读(9382) 评论(2) 推荐(10) 编辑
深入理解Java Stream流水线
摘要:前面我们已经学会 "如何使用Stream API" ,用起来真的很爽,但简洁的方法下面似乎隐藏着无尽的秘密,如此强大的API是如何实现的呢?Pipeline是怎么执行的,每次方法调用都会导致一次迭代吗?自动并行又是怎么做到的,线程个数是多少?本节我们学习Stream流水线的原理,这是Stream实现 阅读全文
posted @ 2017-03-28 22:08 CarpenterLee 阅读(38810) 评论(23) 推荐(30) 编辑
Java Stream API进阶篇
摘要:本文介绍Stream规约操作,这是比较有魔法的地方。规约操作(reduction operation)又被称作折叠操作(fold),是通过某个连接动作将所有元素汇总成一个汇总结果的过程。元素求和、求最大值或最小值、求出元素总个数、将所有元素转换成一个列表或集合,都属于规约操作。Stream类库有两个通用的规约操作reduce()和collect(),也有一些为简化书写而设计的专用规约操作,比如sum()、max()、min()、count()等。 阅读全文
posted @ 2017-03-15 08:12 CarpenterLee 阅读(82225) 评论(4) 推荐(21) 编辑
Java Stream API入门篇
摘要:"本文github地址" .md) 你可能没意识到Java对函数式编程的重视程度,看看Java 8加入函数式编程扩充多少功能就清楚了。Java 8之所以费这么大功夫引入函数式编程,原因有二: 1. 代码简洁 ,函数式编程写出的代码简洁且意图明确,使用 stream 接口让你从此告别 for 循环。 阅读全文
posted @ 2017-03-14 07:57 CarpenterLee 阅读(41415) 评论(4) 推荐(15) 编辑
Lambda表达式和Java集合框架
摘要:Java8为容器新增一些有用的方法,这些方法有些是为完善原有功能,有些是为引入函数式编程(Lambda表达式),学习和使用这些方法有助于我们写出更加简洁有效的代码.本文分别以ArrayList和HashMap为例,讲解Java8集合框架(Java Collections Framework)中新加入方法的使用. 阅读全文
posted @ 2017-03-06 07:03 CarpenterLee 阅读(20208) 评论(6) 推荐(6) 编辑
Lambda表达式和匿名内部类(I)
摘要:Java Labmda表达式的一个重要用法是简化某些匿名内部类(Anonymous Classes)的写法。实际上Lambda表达式并不仅仅是匿名内部类的语法糖,JVM内部是通过invokedynamic指令来实现Lambda表达式的。本篇我们首先感受一下使用Lambda表达式带来的便利之处。 阅读全文
posted @ 2016-10-19 21:04 CarpenterLee 阅读(40951) 评论(3) 推荐(3) 编辑
Java Lambda表达式初探
摘要:Java 8已经发行两年多,但很多人仍然在使用JDK7。对企业来说,技术上谨慎未必是坏事,但对个人学习而言,不去学习新技术就很可能被技术抛弃。Java 8一个重要的变更是引入Lambda表达式(lambda expression)。不要怕,具体到语言层面上Lambda表达式不过是一种新的语法而已,有了它,Java将开启函数式编程的大门。 阅读全文
posted @ 2016-10-09 10:09 CarpenterLee 阅读(8240) 评论(21) 推荐(16) 编辑