juc之函式式介面 流式計算

2021-10-03 14:21:34 字數 2817 閱讀 5433

所有的函式式介面都可以簡化程式設計模型,都可以用lamdba表示式,都只有乙個實現方法。

功能性函式介面(function)

有輸入有輸出

@functionalinte***ce

public

inte***ce

function

};// 用lamdba表示式

function

function =

(s)-

>

;// 測試**

string teststring =

"this is test text"

; system.out.

println

(function.

(teststring));

system.out.

println

("***************==");

system.out.

println

(function2.

(teststring));

}

消費者函式式介面(consumer)

無輸入有輸出

原始碼:

@functionalinte***ce

public

inte***ce

consumer

}; consumer

consumer1 =

(s)-

>

;// 測試**

consumer.

accept

("第乙個");

consumer1.

accept

("第二個");

}

生產者函式式介面(supplier)

沒有輸入有輸出

原始碼:

@functionalinte***ce

public

inte***ce

supplier

};// 用lamdba

supplier

supplier1 =()

->

;// 測試**

object o = supplier.

get();

system.out.

println

(o);

system.out.

println

("***************=");

// 注意lamdba表示式前面加了泛型 所以返回的是泛型型別

string s = supplier1.

get();

system.out.

println

(s);

}

斷定型函式式介面(predicate)

輸入乙個值返回乙個布林

@functionalinte***ce

public

inte***ce

predicate

if the input argument matches the predicate,

* otherwise

*/boolean

test

(t t)

;

輸入乙個t判斷t,返回乙個布林值

例子:

public

static

void

main

(string[

] args)};

predicate

predicate1 =

(integer)

->

;// 測試**

int t =6;

int f =5;

system.out.

println

(predicate.

test

(t))

; system.out.

println

(predicate.

test

(f))

; system.out.

println

("***************=");

system.out.

println

(predicate1.

test

(t))

; system.out.

println

(predicate1.

test

(f))

;}

前提是函式式介面,像是資料庫的操作。

旨在於用資料庫存資料,用流計算進行計算資料

用下面的例子表示 編譯過程中會看到很多之前提到的4種函式是介面

public

static

void

main

(string[

] args)

)//id 為偶數

.filter

((user)

->

)// 使用者名稱大寫 返回物件

.map

(user -

>

)//年齡降序排序

.sorted

((o1,o2)

->

)//列印

.foreach

(system.out:

:println)

;}

Juc入門之Callable介面

furure介面實現執行緒直接資料的互動 runnable介面不可以,因為runnable介面的run方法返回值是void callable實現的未來任務 1 未來任務的get 方法會阻塞主線程的執行 主線程需要得到未來任務的返回值 2 乙個任務不能被反覆執行,如果想反覆執行,必須重新設定新任務 比...

常用函式式介面之Predicate

public class predicatedemo01 判斷給定的字串是否滿足要求 private static boolean checkstring string s,predicatepre public class predicatedemo02 同乙個字串給出兩個不同的判斷條件,最後把這...

函式式介面之function包下的介面

函式式介面提供的介面其實只是常用的一些介面,並沒有什麼特別的地方,可能只是覺得很多人會使用才新增進去的,方便程式設計師,不用自己建造,或許也可能是為了建個規範吧。public static void main string args public static intftext int a,func...