高效 告別996,開啓java高效編程之門 3-6流操做分類

1    重點

理解流程操做分類
緩存

經常使用的方法spa

 

 

2    Stream流操做分類:

2.1  流操做分類之中間操做(Intermediate):3d

無狀態操做——filter/map/peek等
有狀態操做——dictinct/sorted/limit等blog

 

2.2  流操做分類之終端操做(Termina1):
非短路操做——forEach/collect/count等
短路操做——anyMatch/findFirst/findAny等排序

 

 

2.3  有狀態操做無狀態操做區別:ip

無狀態操做:it

好比map或者filter會從輸入流中獲取每個元素,而且在輸出流中獲得一個結果,這些操做沒有內部狀態.循環

 

有狀態操做:終端

a  可是像reduce、sum、max這些操做都須要內部狀態來累計計算結果;遍歷

b  有一些操做sort、distinct、limit、skip看上去和filter、map差很少,他們接收一個流,再生成一個流,可是區別在於排序和去重複項須要知道先前的歷史。

好比排序就須要將全部元素放入緩存區後才能給輸出流加入一個項目,這個操做對緩存的要求是無上限的,流有多大就須要多大的緩存才能進行運算。這些操做也是有狀態操做

 

2.4  非短路操做短路操做區別:

非短路操做:

每個數據都要執行,好比循環forEach,循環完意味着每個元素都遍歷過

 

短路操做:

未必全部數據都能執行到,知足條件後即中止執行。如:findFirst,只要找到第一個要素,就再也不往下執行

 

 

3    Stream流操做分類具體方法:

相關文章
相關標籤/搜索