1. 程式人生 > 其它 >Java8 Steam中預定義的函式式介面

Java8 Steam中預定義的函式式介面

Java8預定義函式式介面

函式式介面 函式描述符 原始型別特化
Predicate T->boolean IntPredicate,LongPredicate, DoublePredicate
Consumer T->void IntConsumer,LongConsumer, DoubleConsumer
Function<T,R> T->R IntFunction< R >,IntToDoubleFunction,IntToLongFunction,LongFunction,LongToDoubleFunction,LongToIntFunction,DoubleFunction,ToIntFunction,ToDoubleFunction,ToLongFunction
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,ObjLongConsumer,ObjDoubleConsumer
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 >