1. 程式人生 > >java8新特性 stream、lambde、optional

java8新特性 stream、lambde、optional

一、stream:

  • stream() − 為集合建立序列流。

  • parallelStream() − 為集合建立並行流。

forEach

Stream 提供了新的方法 'forEach' 來迭代流中的每個資料。以下程式碼片段使用 forEach 輸出了10個隨機數:

Random random = new Random ( ) ; random . ints ( ) . limit (
10 ) . forEach ( System . out :: println ) ;

map(map()就是為了只顯示物件的一部分資訊而準備的

map 方法用於對映每個元素到對應的結果,以下程式碼片段使用 map 輸出了元素對應的平方數:

List < Integer > numbers = Arrays . asList ( 3 , 2
, 2 , 3 , 7 , 3 , 5 ) ; // 獲取對應的平方數 List < Integer > squaresList = numbers . stream ( ) . map ( i -> i * i ) . distinct (
) . collect ( Collectors . toList ( ) ) ;

filter

filter 方法用於通過設定的條件過濾出元素。以下程式碼片段使用 filter 方法過濾出空字串:

List < String > strings = Arrays . asList ( " abc " , " " , " bc " , " efg " , " abcd " , " " , " jkl " ) ; // 獲取空字串的數量 int count = strings . stream ( ) . filter ( string -> string . isEmpty ( ) ) . count ( ) ;

limit

limit 方法用於獲取指定數量的流。 以下程式碼片段使用 limit 方法打印出 10 條資料:

Random random = new Random ( ) ; random . ints ( ) . limit ( 10 ) . forEach ( System . out :: println ) ;

sorted

sorted 方法用於對流進行排序。以下程式碼片段使用 sorted 方法對輸出的 10 個隨機數進行排序:

Random random = new Random ( ) ; random . ints ( ) . limit ( 10 ) . sorted ( ) . forEach ( System . out :: println ) ;

並行(parallel)程式

parallelStream 是流並行處理程式的代替方法。以下例項我們使用 parallelStream 來輸出空字串的數量:

List < String > strings = Arrays . asList ( " abc " , " " , " bc " , " efg " , " abcd " , " " , " jkl " ) ; // 獲取空字串的數量 int count = strings . parallelStream ( ) . filter ( string -> string . isEmpty ( ) ) . count ( ) ;

我們可以很容易的在順序執行和並行直接切換。


Collectors

Collectors 類實現了很多歸約操作,例如將流轉換成集合和聚合元素。Collectors 可用於返回列表或字串:

List < String > strings = Arrays . asList ( " abc " , " " , " bc " , " efg " , " abcd " , " " , " jkl " ) ; List < String > filtered = strings . stream ( ) . filter ( string -> ! string . isEmpty ( ) ) . collect ( Collectors . toList ( ) ) ; System . out . println ( " 篩選列表: " + filtered ) ; String mergedString = strings . stream ( ) . filter ( string -> ! string . isEmpty ( ) ) . collect ( Collectors . joining ( " , " ) ) ; System . out . println ( " 合併字串: " + mergedString ) ;