Java8 函數式編程接口

Java 函數式接口其中有一個單一的功能,以顯示出這些接口。

接口函數名 說明
BiConsumer<T,U> 表示接收兩個輸入參數和不返回結果的操作。
BiFunction<T,U,R> 表示接受兩個參數,併產生一個結果的函數。
BinaryOperator 表示在相同類型的兩個操作數的操作,生產相同類型的操作數的結果。
BiPredicate<T,U> 代表兩個參數謂詞(布爾值函數)。
BooleanSupplier 代表布爾值結果的提供者。
Consumer 表示接受一個輸入參數和不返回結果的操作。
DoubleBinaryOperator 代表在兩個double值操作數的運算,併產生一個double值結果。
DoubleConsumer 表示接受一個double值參數,不返回結果的操作。
DoubleFunction 表示接受double值參數,併產生一個結果的函數。
DoublePredicate 代表一個double值參數謂詞(布爾值函數)。
DoubleSupplier 表示表示接受double值參數,併產生一個結果的函數。值結果的提供者。
DoubleToIntFunction 表示接受一個double值參數,不返回結果的操作。
DoubleFunction 表示接受double值參數,併產生一個結果的函數。
DoublePredicate 代表一個double值參數謂詞(布爾值函數)。
DoubleSupplier DoubleToIntFunction
DoubleToIntFunction 表示接受double值參數,併產生一個int值結果的函數。
DoubleToLongFunction 表示上產生一個double值結果的單個double值操作數的操作。
Function<T,R> 代表接受一個double值參數,併產生一個long值結果的函數。
DoubleUnaryOperator 表示上產生一個double值結果的單個double值操作數的操作。
Function<T,R> 表示接受一個參數,併產生一個結果的函數。
IntConsumer 表示接受單個int值的參數並沒有返回結果的操作。
IntFunction 表示接受一個int值參數,併產生一個結果的函數。
IntPredicate 表示一個整數值參數謂詞(布爾值函數)。
IntSupplier 代表整型值的結果的提供者。
IntToLongFunction 表示接受一個int值參數,併產生一個long值結果的函數。
IntUnaryOperator 表示產生一個int值結果的單個int值操作數的運算。
LongBinaryOperator 表示在兩個long值操作數的操作,併產生一個ObjLongConsumer值結果。
LongFunction 表示接受long值參數,併產生一個結果的函數。
LongPredicate 代表一個long值參數謂詞(布爾值函數)。
LongSupplier 表示long值結果的提供者。
LongToDoubleFunction 表示接受double參數,併產生一個double值結果的函數。
LongToIntFunction 表示接受long值參數,併產生一個int值結果的函數。
LongUnaryOperator 表示上產生一個long值結果單一的long值操作數的操作。
ObjDoubleConsumer 表示接受對象值和double值參數,並且沒有返回結果的操作。
ObjIntConsumer 表示接受對象值和整型值參數,並返回沒有結果的操作。
ObjLongConsumer 表示接受對象值和整型值參數,並返回沒有結果的操作。
ObjLongConsumer 表示接受對象值和double值參數,並且沒有返回結果的操作。
ObjIntConsumer 表示接受對象值和整型值參數,並返回沒有結果的操作。
ObjLongConsumer 表示接受對象的值和long值的說法,並沒有返回結果的操作。
Predicate 代表一個參數謂詞(布爾值函數)。
Supplier 表示一個提供者的結果。
ToDoubleBiFunction<T,U> 表示接受兩個參數,併產生一個double值結果的功能。
ToDoubleFunction 代表一個產生一個double值結果的功能。
ToIntBiFunction<T,U> 表示接受兩個參數,併產生一個int值結果的函數。
ToIntFunction 代表產生一個int值結果的功能。
ToLongBiFunction<T,U> 表示接受兩個參數,併產生long值結果的功能。
ToLongFunction 代表一個產生long值結果的功能。
UnaryOperator 表示上產生相同類型的操作數的結果的單個操作數的操作。

總體來說這些接口一共分爲五類

Function

Function接口定義:
接受一個一個泛型T,返回一個泛型R

 @FunctionalInterface    
    public interface Function<T, R>

所定義的抽象方法,(lambda表達式只能定義一個抽象方法);

R apply(T t); 

使用案例

public static void main(String[] args) {
		DoubleFunction<Integer> doubleToInt = a -> (int)a;
		
		System.out.println(doubleToInt.apply(8.8));
	}

輸出結果

8

Consumer

接口的定義
接受一個泛型T,不返回任何東西

@FunctionalInterface
    public interface Consumer<T>

唯一的lambda表達式抽象方法

void accept(T t);

案例

		DoubleConsumer square = a -> System.out.println(Math.sqrt(a));
		
		DoubleConsumer pow = a -> System.out.println(Math.pow(a, a));
		
		square.accept(2.5);
		pow.accept(85.5);
	}

輸出結果

1.5811388300841898
1.5244135810422116E165

Predicate

接口的定義
輸入一個泛型,返回一個Boolean型

 @FunctionalInterface    
    public interface Predicate<T>

唯一的lambda抽象方法

boolean test(T t);

案例

public static void main(String[] args) {
		DoublePredicate isDouble = a -> a > 2.0; 
		System.out.println(isDouble.test(1.9));
	}

輸出結果

false

Supplier

接口定義
不接受任何參數,返回一個泛型T

public interface Supplier<T> {

        /**
         * Gets a result.
         *
         * @return a result
         */
        T get();
    }

案例

		DoubleSupplier addition = () -> {
			return 2.5;
		};
		
		DoubleSupplier don = () -> {
			return 54.6;
		};
		
		System.out.println(addition.getAsDouble());
		
		System.out.println(don.getAsDouble());
		
	}

輸出結果

2.5
54.6
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章