Lambda和Stream流知識點

2021-10-09 05:25:39 字數 1821 閱讀 2985

一、函式式介面,滿足條件

/**

* 函式式介面

*/@functionalinte***ce

public

inte***ce

functioninte***ce

二、引數的傳遞
public

void

test()

三、**編寫特性

public

void

test()

).collect

(collectors.

joining()

);system.out.

println

(string.

format

("collect:%s"

, collect));

}

四、方法引用

一、流的操作特性

二、流的生成

三、流的操作型別

(1) stream所有操作組合在一起,即變成了乙個管道,管道中有以下兩個操作:

1、中間操作:呼叫中間操作會返回乙個新的流。通過執行連續多個操作,就組成了stream中的執行管道(pipeline)。需要注意的是

這些管道被新增後並不會真正執行,只有呼叫終止操作之後才會執行。

2、終止操作:掉用該方法後,將執行之前所有中間操作,獲得返回結果,結束對流的使用。

注:

(2) 流的執行順序說明:

其每個元素挨著作為引數去呼叫中間操作及終止操作,而不是遍歷完乙個方法,在遍歷下乙個方法
四、流的並行操作
呼叫stream.parallel()方法,可以將流基於多個執行緒併發執行。
四、採集 (collect)
使用

1、list

2、map

3、group by

4、陣列

5、求最大、小值

6、求任意值

private

static list

peoples = lists.

newarraylist()

;static

/** * 分組

*/public

static

void

test2()

/** * 過濾

*/public

static

void

test3()

filter    : 接收乙個boolean表示式來過濾元素

map : 將流中元素 1:1對映成另乙個元素

mapint : 將流中元素對映成int,maptolong、maptodouble操作類似 ,目的是減少裝箱拆箱帶來的損耗

flatmap : 如map時返回的是乙個list,將會進一步進行拆分。詳見flatmap例項

foreach : 遍歷流中所有元素。 終止操作

sorted : 排序

peek : 遍歷流中所有元素。 中間操作

reduce : 歸約合併操作

collect : 採集資料,返回乙個新的結果

引數說明:

supplier採集需要返回的結果

bicomsumer傳遞結果與元素進行合併

bicomsumer在併發執行的時候,結果合併操作。

distinct : 基於equal 表示式去重

Lambda和Stream流 Lambda表示式

內部類根據在類中的位置不同分為三種 1.成員內部類 在類的成員位置 2.區域性內部類 在方法中 3.匿名內部類 在方法中,是一種簡化的寫法public class outer public class demo1 區域性內部類是定義在方法中的類,只能在方法中使用,侷限性很強。所以一般不會使用。pub...

Lambda 函式式介面 Stream流 序列化

函式程式設計思想 1 不使用lambda 需要定義類 建立物件 2 使用lambda 不需要定義類,不需要建立物件。lambda相對於物件導向程式設計的優勢 寫法簡單,可讀性強。預設規則 1 形參相關 形參的資料型別都可以省略。2 形參相關 如果形參只有乙個,可以同時省略 資料型別 一對小括號。注 ...

關於stream 和lambda使用

這幾天看專案用到了這些,總結學習一下 先生成測試資料 liststudents new arraylist students.add student.builder name wyp id 1l age 21 男 build students.add student.builder name wj ...