博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[2017.02.23] Java8 函数式编程
阅读量:4637 次
发布时间:2019-06-09

本文共 1605 字,大约阅读时间需要 5 分钟。

以前学过Haskell,前几天又复习了其中的部分内容。

函数式编程与命令式编程有着不一样的地方,函数式编程中函数是第一等公民,通过使用少量的几个数据结构如list、map、set,以及在这些数据结构上的专门定制化操作,来实现代码的复用。同时函数式编程有惰性求值、高阶函数、柯里化、Point-free等风格,常用的几个函数式风格的操作有 map、filter、reduce/foldr/foldl 等。 Haskell是一种纯函数式编程语言,函数没有副作用。而Python语言和Java8等则是多范式编程语言,提供了部分的函数式编程的实现。
今天阅读《Java8 函数式编程 (Java 8 Lambdas: Functional Programming for the Masses)》的前几章,编写一个简单的小程序,尽量更多地使用和测试Java8中的lambda表达式、Stream流操作、惰性求值等函数式编程风格。
PS. 最近读了不少的书籍,很多书对自己真正有用的部分真的不多。曾经傻啦吧唧地拿到一本书从头到尾没有重点地看,时间没少花费,效果却差强人意。阅读呀,有时候还是要带着目的去读,不管是不是功利性地,只要能够学得快记得牢用得好,过程都不是问题!

/** * Created by auss on 17-2-23. */import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;import java.util.stream.Stream;public class Main {    public static void main(String[] args) {        System.out.println("Hello World!");        test_lambda();    }    public static void test_lambda() {        List
ilist = Stream.of(Arrays.asList(1, 2, 3, 4, 5), Arrays.asList(6, 7, 8, 9)) .flatMap(number -> number.stream()) // 合并,惰性求值 .peek(value -> System.out.println(" " + value.toString())) // 遍历输出 .collect(Collectors.toList()); //输出位list,触发及时求值操作 Integer res = ilist.stream() //List转化为Stream对象 stream()串行流,parallelStream()并行流 .parallel() //将Stream并行化处理 .filter(value -> value % 2 != 0) //过滤奇数 .map((value) -> value * 3 + 1) //乘以3,加上1 .reduce(0, (acc, elem) -> acc + elem); // 累加求和,初始值为0, System.out.println("Result : " + res.toString()); // 变量的自动装线与拆箱 }}

转载于:https://www.cnblogs.com/ausk/p/6435093.html

你可能感兴趣的文章
ACE(Adaptive Communication Environment)介绍
查看>>
delphi 更改DBGrid 颜色技巧
查看>>
python编码问题
查看>>
POJ 2031 Building a Space Station
查看>>
面向对象1
查看>>
编程开发之--java多线程学习总结(5)
查看>>
register_globals(全局变量注册开关)
查看>>
as3调用外部swf里的类的方法
查看>>
如何让 zend studio 10 识别 Phalcon语法并且进行语法提示
查看>>
任意阶幻方(魔方矩阵)C语言实现
查看>>
视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库
查看>>
第五次作业
查看>>
织梦教程
查看>>
杭电多校 Harvest of Apples 莫队
查看>>
java 第11次作业:你能看懂就说明你理解了——this关键字
查看>>
C/C++心得-结构体
查看>>
函数名作为参数传递
查看>>
apt-get for ubuntu 工具简介
查看>>
数值计算算法-多项式插值算法的实现与分析
查看>>
day8-异常处理与网络编程
查看>>