1. Lambda
1.1 概述
Lambda表达式是一种没有名字的函数,也可称为闭包,是Java 8 发布的最重要新特性。
本质上是一段匿名内部类,也可以是一段可以传递的代码。
还有叫箭头函数的
1.2 优点
是匿名内部类的简写方式,使代码更加简洁
1.3 和匿名内部类对比
1.4 语法结构
(参数,参数,参数...)->{方法体}
1 无参和多参,小括号必须写
2 只有一个参数的时候,小括号可以不写
3 如果只有一条语句,大括号也可以不写,并且语句结尾不需要 分号
4 如果只有一条语句,并且也是返回值语句的话,return 也要省略
5 如果是多条语句,必须加{},就是正常编码,改写分号写分号,改写return就写retur
1.5 案例
2 函数式接口
2.1 概述
英文称为Functional Interface
其本质是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。
核心目标是为了给Lambda表达式的使用提供更好的支持,进一步达到函数式编程的目标,可通过运用函数式编程极大地提高编程效率。
其可以被隐式转换为 lambda 表达式。
2.2 特点
函数式接口是仅制定一个抽象方法的接口
可以包含一个或多个静态或默认方法
专用注解即@FunctionalInterface 检查它是否是一个函数式接口,也可不添加该注解
如果有两个或以上 抽象方法,就不能当成函数式接口去使用,也不能添加@FunctionalInterface这个注解
如果只有一个抽象方法,那么@FunctionalInterface注解 加不加 都可以当做函数式接口去使用
2.3 自定义
2.4 JDK 子代的函数式接口
Supplier : 表示供应商,有个get方法,无参,有返回值,一般用于获取数据
Consumer : 表示消费者,accept,有参,无返回值
Function ,函数操作, apply , 有参也有返回值
Predicate 断言,用于做判断校验操作,test,需要传入参数并返回boolean类型
3 方法、构造器、数组
3.1 概述
Lambda 表达式的另外一种形式
3.2 方法引用
3.3 构造器引用
3.4 数组引用
4 Stream API
4.1 概述
数据渠道、管道,用于操作数据源(集合、数组等)所生成的元素序列。
集合讲的是数据,流讲的是计算
即一组用来处理数组,集合的API。
4.2 特点
Stream 不是数据结构,没有内部存储,自己不会存储元素
Stream 不会改变源对象。相反,他们会返回一个持有结果的新Stream。
Stream 操作是延迟执行的。这意味着他们会等到需要结果的时候才执行。
不支持索引访问。
延迟计算
支持并行
很容易生成数据或集合
支持过滤,查找,转换,汇总,聚合等操作。
4.4 创建流的五种方式
4.5 转换算子
4.5.1 概述
4.5.2 常用方法
4.6 动作算子