Java 8 的 43 个函数总结
根据Java8的源码,分析统计和总结得出该文档。
统计:
总共43个函数类
按函数的类别可分为5类
按参数个数可分为4类
按类型可以范围5类
继承关系:2个。大多数的函数类是没有继承关系的,仅仅靠类名称上的语义来保证关系的递进
1、5类函数
根据类名称,将末尾的关键字提取出来分组,得到5个类别:
类别 | 数量 | 汇总 | 描述 | 方法 |
Function | 17 | Function BiFunction 类型Function *3 类型To类型Function *6 To类型Function *3 To类型BiFunction *3 | 函数。
| R apply(T t); R apply(T t, U u); default compose(before); default andThen(after); static identity(); |
Consumer | 8 | Consumer BiConsumer 类型Consumer *3 Obj类型Consumer *3 | 消费者。
| void accept(T t); void accept(T t, U u); default andThen(after); |
Operator | 8 | UnaryOperator BinaryOperator 类型UnaryOperator *3 类型BinaryOperator *3 | 操作。
| R apply(T t); R apply(T t, U u); int applyAsInt(int operand); static identity(); static minBy(comparator); static maxBy(comparator); |
Predicate | 5 | Predicate BiPredicate DoublePredicate IntPredicate LongPredicate | 断言,谓语。
| boolean test(T t); default and(other); default negate(); default or(other); static isEqual(targetRef); |
Supplier | 5 | Supplier BooleanSupplier DoubleSupplier IntSupplier LongSupplier | 提供者。
| T get(); |
2、4个参数类别
所有的函数被划分为1个参数的和2个参数的。
类别 | 数量 | 汇总 | 描述 | 方法 |
无 | 4 | 5个基本类别中除了Operator Consumer、Function、Predicate、Supplier | 一个参数的 | xxx(T t); |
Bi | 6 | BiConsumer BiFunction BiPredicate ToDoubleBiFunction ToIntBiFunction ToLongBiFunction | 两个参数的 | xxx(T t, U u); |
Unary | 4 | UnaryOperator DoubleUnaryOperator IntUnaryOperator LongUnaryOperator | 一元操作 | R apply(T t); static identity(); |
Binary | 4 | BinaryOperator DoubleBinaryOperator IntBinaryOperator LongBinaryOperator | 二元操作 | R apply(T t, U u); static minBy(comparator); static maxBy(comparator); |
2.1、“N个参数”与“N元操作”的区别:
N元 | 区别 | 继承关系 |
Unary | 与函数的区别: 一元操作的参数与返回值类型必须相同;函数的参数与返回类型可以不同 | UnaryOperator extends Function<T, T> |
Binary | 与2参数函数区别: 二元操作的两个操作数、返回值类型必须是相同;而2参数函数则无此要求 | BinaryOperator extends BiFunction<T,T,T> |
3、类型
Long | 9 | |
Int | 9 | |
Double | 9 | |
Obj | 3 | ObjDoubleConsumer ObjIntConsumer ObjLongConsumer |
Boolean | 1 | BooleanSupplier |
ToLong | 4 |
ToInt | 4 |
ToDouble | 4 |
4、附录
原始的43个函数类,以及分解过程
编号 | 原始类名称 | 限定符1 | 限定符2 | 末尾 |
1 | BiConsumer | Bi | Consumer | |
2 | BiFunction | Bi | Function | |
3 | BinaryOperator | Binary | Operator | |
4 | BiPredicate | Bi | Predicate | |
5 | BooleanSupplier | Boolean | Supplier | |
6 | Consumer | Consumer | ||
7 | DoubleBinaryOperator | Double | Binary | Operator |
8 | DoubleConsumer | Double | Consumer | |
9 | DoubleFunction | Double | Function | |
10 | DoublePredicate | Double | Predicate | |
11 | DoubleSupplier | Double | Supplier | |
12 | DoubleToIntFunction | Double | ToInt | Function |
13 | DoubleToLongFunction | Double | ToLong | Function |
14 | DoubleUnaryOperator | Double | Unary | Operator |
15 | Function | Function | ||
16 | IntBinaryOperator | Int | Binary | Operator |
17 | IntConsumer | Int | Consumer | |
18 | IntFunction | Int | Function | |
19 | IntPredicate | Int | Predicate | |
20 | IntSupplier | Int | Supplier | |
21 | IntToDoubleFunction | Int | ToDouble | Function |
22 | IntToLongFunction | Int | ToLong | Function |
23 | IntUnaryOperator | Int | Unary | Operator |
24 | LongBinaryOperator | Long | Binary | Operator |
25 | LongConsumer | Long | Consumer | |
26 | LongFunction | Long | Function | |
27 | LongPredicate | Long | Predicate | |
28 | LongSupplier | Long | Supplier | |
29 | LongToDoubleFunction | Long | ToDouble | Function |
30 | LongToIntFunction | Long | ToInt | Function |
31 | LongUnaryOperator | Long | Unary | Operator |
32 | ObjDoubleConsumer | Obj | Double | Consumer |
33 | ObjIntConsumer | Obj | Int | Consumer |
34 | ObjLongConsumer | Obj | Long | Consumer |
35 | Predicate | Predicate | ||
36 | Supplier | Supplier | ||
37 | ToDoubleBiFunction | ToDouble | Bi | Function |
38 | ToDoubleFunction | ToDouble | Function | |
39 | ToIntBiFunction | ToInt | Bi | Function |
40 | ToIntFunction | ToInt | Function | |
41 | ToLongBiFunction | ToLong | Bi | Function |
42 | ToLongFunction | ToLong | Function | |
43 | UnaryOperator | Unary | Operator |
4.1 将拆分后的关键字分类
类型1 | 类型2 | 参数类型 | 函数类型 |
ToDouble | Double | Bi | Consumer |
ToInt | Int | Binary | Function |
ToLong | Long | Unary | Operator |
Obj | Predicate | ||
Boolean | Supplier |