Lambda 函式式介面 Stream流 序列化

2021-10-23 01:11:21 字數 2036 閱讀 1072

函式程式設計思想

(1).不使用lambda:需要定義類、建立物件;

(2).使用lambda:不需要定義類,不需要建立物件。

lambda相對於物件導向程式設計的優勢:寫法簡單,可讀性強。

預設規則

1).形參相關:形參的資料型別都可以省略。

2).形參相關:如果形參只有乙個,可以同時省略:資料型別、一對小括號。

注:如果省略小括號,必須同時省略資料型別

如果省略資料型別,可以不省略小括號。

3).方法體相關:如果方法體中只有一句話,可以同時省略:一對大括號、語句後的分號、最後的return關鍵字。

要省就全省,要用就全用

概述::有且只有乙個「自定義」的抽象方法(可以包含同object類中宣告相同的抽象方法),這種介面叫:函式式介面。

函式式介面:consumer介面

demo

class zi implements consumer

}public class demo

});的形式

fun(s -> system.out.println(s.touppercase()));

}public static void fun(consumercon)

}

函式式介面:predicate介面(判斷介面)

demo

class zi implements predicate

}public class demo

});表示式:

fun(n -> n > 10);

}public static void fun(predicatep)

}

常用方法:

獲取方式

1).通過collection集合獲取流:collection介面的:預設方法:stream()獲取流:

2).通過map集合獲取流:

3).通過陣列(引用型別)獲取流:

4).通過陣列(基本型別)獲取流:

5).通過零散資料獲取流:

demo

public static void main(string args) ;

streamintegerstream1 = arrays.stream(integerarray);//方式一

streamintegerstream2 = stream.of(integerarray);//方式二,注意:只能接收引用型別陣列

//4).通過陣列(基本型別)獲取流:

int intarray = ;

intstream intstream1 = arrays.stream(intarray);//方式一:

intstream intstream2 = intstream.of(intarray);//方式二:

//5).通過零散資料獲取流:

streamintegerstream = stream.of(10, 20, 30, 40, 50, 60, 70, 80);

}

綜合案例

public static void main(string args)
將stream中的資料提取到集合或陣列中

public

static

void

main

(string[

] args)

「序列化」:將乙個「記憶體中的物件」的「名字」 ,以及「屬性的值」一起儲存到乙個「檔案」中,這個過程叫:序列化。

「反序列化」:將之前「序列化」的物件,再次的「載入到記憶體,並建立物件」,這個過程叫:反序列化。

Lambda表示式2 函式式介面

只包含乙個抽象方法的介面,成為函式式介面。可以通過lambda表示式來建立該介面的物件。可以在任意函式式介面使用 functionalinte ce註解,可以檢查其是否是乙個函式式介面。functionalinte ce public inte ce test1 作為引數傳遞的lambda表示式 作...

Lambda 表示式 與 函式式介面

lambda 表示式,也可稱為閉包,是乙個匿名函式 語法 parameters 將引數和實現分開 parameters 引數列表。引數型別可省略 只有乙個引數 可省略 引數名稱不允許與外層區域性變數相同。函式的具體實現。只有一行語句 可省略,return不用寫。只能引用標記了 final 的外層區域...

常見函式式介面及其lambda實現樣例

從上面的testbifunction方法可以看到bifunctionbifunction有三個引數,其中兩個是方法的引數型別,乙個是返回值型別.而返回值型別是由接受返回值的變數解決定的.而testbinaryoperator方法繼承了bifunction,只是約束了三個引數型別是一樣的.當兩個實現同...