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,函式式介面作為方法的返回值...