【读书笔记——java8函数式编程】第一章 简介 第二章 Lambda表达式
第一章 简介
1 Lambda表达式产生的原因:
商业发展需要复杂的应用,大多都跑在功能强大的多核CPU机器上,涉及到锁的编程,人们试图将并发抽象化,开发了java.util.concurrent包和第三方类的等,但是抽象级别还是不够,例如在处理大型数据集合时缺乏高效的并发操作,为了编写这类处理批量数据的并行类库,需要在语言层面上修改现有的Java:增加Lambda表达式。
2 面向对象编程是对数据进行抽象,而函数式编程是对行为进行抽象。
3 什么是函数式编程:
每个人对函数式编程的理解不尽相同。但其核心是:在思考问题时,使用不可变值和函数,函数对一个值进行处理,映射成另一个值。
第二章 Lambda表达式
Java 8的最大变化是引入了Lambda表达式——一种紧凑的、传递行为的方式。
设计匿名内部类的目的,就是为了方便Java程序员将代码作为数据传递。但是匿名内部类有较多样板代码,代码不够清晰。而Lambda表达式所需样板代码少,且参数类型不言而明时,不用显示指定,编译器可以通过上下文获取到参数的类型。
Lambda表达式的不同形式:
Runnable noArguments = () -> System.out.println("Hello world");
ActionListener oneArgument = event -> System.out.println("Button clicked");
Runnable mutiStatement = () -> {
System.out.println("Hello");
System.out.println(" World");
};
BinaryOperator<Long> add = (x, y) -> x + y;
BinaryOperator<Long> addExplicit = (Long x, Long y) -> x + y;
Lambada表达式引用的是值,而不是变量;
函数接口:Lambda表达式本身的类型。函数接口是只有一个抽象方法的接口。,接口中单一方法的命名并不重要,只要方法签名和Lambda表达式的类型匹配即可。
java中重要的函数接口