函式式介面

2021-09-25 12:10:03 字數 1997 閱讀 4050

jdk提供我們的常用函式式介面:

supplier;

consumner;

predicate;

function;

02_函式式介面的概念&函式式介面的定義

概念: 有且僅有乙個抽象方法的介面;

@functionalinte***ce

告訴編譯器,我當前這個介面是函式式介面;(編譯器就會檢測當前介面是不是有且僅有乙個抽象方法)

03_函式式介面的使用

lambda表示式的使用場景:

只有乙個:

來替換函式式介面的實現類物件;

效能浪費的日誌案例:

public static void showlog(int level,string message)}	

show(2,"1"+"2"+"3");

以上**為啥會浪費效能;

不管有沒有輸出,肯定會做拼接;

05_使用lambda優化日誌案例

為什麼使用lambda表示式可以提高效能?

延遲特性:

原理:lambda表示式本質上是乙個方法;只有顯示的呼叫才會執行裡面的**;

06_函式式介面作為方法的引數案例

07_函式式介面作為方法的返回值型別案例

08_常用的函式式介面_supplier介面

inte***ce supplier
使用的時候,用什麼型別來替換泛型,這個介面就會生產什麼型別的資料;

supplier介面的抽象方法 get()是用來幹什麼的?

生產指定型別的資料;

09_常用的函式式介面_supplier介面練習_求陣列元素最大值

10_常用的函式式介面_consumer介面

inte***ce consumer;

consumer con3 = con1.addthen(con2);

con3.accept("飛哥");

con1.addthen(con2).accept("飛哥");

13_常用的函式式介面_predicate介面

inte***ce predicate;

15_常用的函式式介面_predicate介面_預設方法or&negate

predicate介面的 predicate or(predicate p)這個方法的作用?

predicate介面的 predicate negate()這個方法的作用?

public  default predicate or(predicate p);

public  default predicate negate();

17_常用的函式式介面_function介面

inte***ce function);

// 4.只保留年齡小於30歲的;

streamstream5 = stream4.filter((str) -> );

// 5.把每條資料對映成乙個user物件;functionstreamstream6 = stream5.map((str) -> );

// 6.遍歷結果;

*//*stream6.foreach((user)->);

*//*

listresult = stream6.collect(collectors.tolist());

for (user user : result) */

list.stream()

.limit(7)//擷取

.skip(1)//跳過

.filter(str -> )//過濾女的

.filter((str) -> )//過濾30歲以下的

.map((str) -> )//對映成user物件

.foreach((user)->);//輸出}}

函式式介面

在oop中方法中的引數傳遞的資料,而函式式介面傳遞的是一種行為。如果乙個介面只有乙個抽象方法,那麼這個介面就是函式式介面 如果在某個介面上宣告了 functionalinte ce 註解,那麼編譯器會按照函式式介面的定義來約束該介面。public class mydemo public static...

函式式介面

函式式介面 有且只有乙個抽象方法的介面,稱之為函式式介面 當然介面中可以包含其他的 方法 預設,靜態,私有 functionalinte ce註解 作用 可以檢測介面是否是乙個函式式介面 是 編譯成功 否,編譯失敗 介面中沒有抽象方法,或者抽象方法有多個 functionalinte ce publ...

函式式介面

只有乙個抽象方法的介面就叫函式式介面 functionalinte ce來標註函式式介面 1,函式式介面作為方法的引數,且函式式介面中的方法沒有引數 2,函式式介面作為方法的引數,且函式式介面的方法中有引數 3,函式式介面作為方法的返回值,且函式式介面中的方法沒有引數 4,函式式介面作為方法的返回值...