函数式编程和lambda表达式
1. 什么是函数式编程
函数式编程是一种相对于命令式编程的一种编程范式,它不是一种具体的技术,而是一种如何搭建应用程序的方法论
2. 为什么要使用函数式编程
* 能让我们以一种更加优雅的方式进行编程
* 函数式编程与命令式编程相比
1)不同点:
关注点不同,命令式编程我们关注的是怎么样做,而函数式编程关注的是做什么。
2)优点:
可以使代码更加的简短,更加的好读。
3. lambda表达式初接触
具体看一个例子,求数组中的最大值,如果数据量太大,想要处理更高效,jdk8以前,只能自己创建线程池,自己拆分,而jdk8以后只需要加上parallel(),意思就是告诉它我要多线程的处理该数据,以此可以看到他的魅力
public class MinDemo {
public static void main(String[] args) {
int[] arr = {15,24,12,451,156};
int min = Integer.MAX_VALUE;
for (int a :
arr) {
if (a < min) {
min = a;
}
}
System.out.println(min);
//jdk8 lambda,parallel()多线程处理
int min2 = IntStream.of(arr).parallel().min().getAsInt();
System.out.println(min2);
}
4. 当然还有很多其他的特性,这里只简单介绍一下
- jdk8接口新特性
- 接口里只有一个要实现的方法,单一责任制
- 新增默认方法
- 函数接口
- 只需要知道输入输出的类型
- 支持链式操作
- 方法引用
- 静态方法引用
- 非静态方法引用
- 构造方法引用
- 级联表达式和柯里化
- 级联表达式是返回函数的函数
- 柯里化把多个参数的函数转换为只有一个参数的函数
- 变量引用
- 引用外边的变量必须是final类型
5. 以下是函数式编程常用的接口