1. lambda表达式
// 不需要参数,返回值为5() -> 5// 接收一个参数(数字类型),返回其二倍的值x -> 2*x// 接收两个参数(数字类型),返回两个参数的和(x,y) -> x+y// 接收两个int类型的x与y,返回两个的和(int x,int y) -> x+y// 直接在控制台打印。无返回值(String s) -> System.out.println(s)逗号隔开的参数列表 (x,x,x) ()箭头符号 ->方法体 (λ代码块)
2. 函数式接口
JDK自带 (很多存在于java.util.function包中) 四大核心函数式接口:
2.1 有参,无返回值(消费性)
Consumer<?> 消费者 如何理解?:给了方法一个参数 消费掉了 没了@FunctionalInterfacepublic interface Consumer<T> {void accept(T t);}
2.2 无参,有返回值(供给性)
Supplier<T> 如何理解? 供给 只出不进@FunctionalInterfacepublic interface Supplier<T> {T get();}
2.3 有参,有返回值(函数性)
Funcation<T,R> 如何理解?:有参 有返回值 很符合函数规则@FunctionalInterfacepublic interface Function<T, R> {R apply(T t);...}
2.4 断言式接口
Predicate<T> 如何理解?: 有参 返回boolean 我断言今天会下雨? 真还是假@FunctionalInterfacepublic interface Predicate<T> {boolean test(T t);...}
3. 方法引用和数组引用
Java 8还允许使用::来引用一个已经存在的方法,其语法如下:
| instanceName::methodName | 对象::方法名 |
|---|---|
| ClassName::staticMethodName | 类名::静态方法 |
| ClassName::methodName | 类名::普通方法 |
| ClassName::new | 类名::new 调用的构造器 |
| TypeName[]::new | String[]::new 调用数组的构造器 |
4. StreamAPI
count 统计个数 long 终结 forEach 逐一处理 void 终结 filter 过滤 Stream 函数拼接 limit 取用前几个 Stream 函数拼接 skip 跳过前几个 Stream 函数拼接 map 映射 Stream 函数拼接 concat 组合 Stream 函数拼接
| 方法名 | 方法作用 | 返回值类型 | 方法种类 |
|---|---|---|---|
| count | |||
| foreach | |||
| filter | |||
| limit | |||
| skip | |||
| map |
