一、函式式介面,滿足條件
/**
* 函式式介面
*/@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 ...