Java8 Steam中預定義的函式式介面
阿新 • • 發佈:2022-04-12
Java8預定義函式式介面
函式式介面 | 函式描述符 | 原始型別特化 |
---|---|---|
Predicate |
T->boolean | IntPredicate,LongPredicate, DoublePredicate |
Consumer |
T->void | IntConsumer,LongConsumer, DoubleConsumer |
Function<T,R> | T->R | IntFunction< R >,IntToDoubleFunction,IntToLongFunction,LongFunction |
Supplier |
()->T | BooleanSupplier,IntSupplier, LongSupplier,DoubleSupplier |
UnaryOperator |
T->T | IntUnaryOperator,LongUnaryOperator,DoubleUnaryOperator |
BinaryOperator |
(T,T)->T | IntBinaryOperator,LongBinaryOperator,DoubleBinaryOperator |
BiPredicate<L,R> | (L,R)->boolean | |
BiConsumer<T,U> | (T,U)->void | ObjIntConsumer |
BiFunction<T,U,R> | (T,U)->R | ToIntBiFunction<T,U>,ToLongBiFunction<T,U>,ToDoubleBiFunction<T,U> |
一些常用的Lambda表示式與其對應的函式式介面應用舉例:
使用案例 | Lambda表示式 | 對應的函式式介面 |
---|---|---|
布林表示式 | (List list) -> list.isEmpty() | Predicate<List |
建立物件 | () -> new Apple(10) | Supplier< Apple > |
消費一個物件 | (Apple a) -> System.out.println(a.getWeight()) | Consumer< Apple > |
從一個物件中選擇/提取 | (String s) -> s.length() | Function< String, Integer >或ToIntFunction< String > |
合併兩個值 | (int a, int b) -> a * b | IntBinaryOperator |
比較兩個物件 | (Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight()) | Comparator< Apple >或BiFunction< Apple, Apple, Integer > 或 ToIntBiFunction< Apple, Apple > |