Java8 新特性 Stream() API


新特性里面為什么要加入流Steam()

集合是Java中使用最多的API,幾乎每一個Java程序都會制造和處理集合。集合對於很多程序都是必須的,但是如果一個集合進行,分組,排序,篩選,過濾...這些操作,會感到非常的難受,所以我們在連接數據庫,處理數據時,數據能在sql中處理就在sql中處理,不能的就在java程序中處理,最后沒有辦法了才在頁面中處理。
  這個為什么呢?因為使用sql語句中處理數據,真的非常的簡單。如果把數據取出來,在程序中用集合處理,用循環會非常的麻煩。所以java在Java8里面加入了Steam(),為了就是處理集合的時候,就象寫sql語句一樣簡單。

Stream() 流

Stream流就是一種類似sql語句的方式來操作集合,可以以一種更加直觀的方式對集合進行運算和表達式的高階抽象。可以極大的提高效率,並且寫出高質量的代碼。 為什么說是流呢? 是因為它是把集合抽象成了一根管子內的水一樣,可以進行過濾,處理,排序...等等操作。元素在經過中間操作以后,最后有終端操作來進行收集,可以變成你想要的任何類型的數據。比如:收集成 List,Set,Map,Array...

創建Stream()流的幾種方式

  • 通過Collection()類的Stream()來創建串行流
  • 通過Collection()類的parallelStream()來創建並行流,可以非常簡單的利用多核資源
  • 通過Arrays類中的Stream()方法來獲取流
  • 通過無限流 >>

操作的實例: Java8 新特性 Stream 練習實例

中間操作:有狀態操作

中間操作,就是把數據處理成自己想要的類型,並且有狀態操作,是在所有的數據基礎上進行操作的。比如dictinct(去重),sorted(排序)....
所有的有狀態操作:

去重 distinct
跳過 skip
截斷 limit
排序 sorted

>>

中間操作:無狀態操作

中間無狀態操作,可以在單個對單個的數據進行處理。比如:filter(過濾)一個元素的時候,也可以判斷,比如map(映射)...

過濾 filter
映射 map
扁夾化 flatMap
遍厲 peek

>>

終端操作:短路

把經過中間操作處理過的值收集起來,短路的意思是當符合條件的時候,直接結束流。比如說:findFirst(查找首個)只要有第一個就結束流。

匹配所有 allMatch
任意匹配 anymMatch
不匹配 noneMatch
查找首個 findFirst
查找任意 findAny

>>

終端操作:非短路

非短路終端操作:必須把所有的元素都過一遍之后才會結束流。比如說:forEach,必須把所有的元素都循環一遍之后才會結束。

遍厲 forEach
歸約 reduce
最大值 max
最小值 min
聚合 collect
計數 count

>>



細節決定成敗!
個人愚見,如有不對,懇請扶正!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM