Stream API

碼上回來發表於2021-01-03

Stream API

A sequence of elements supporting sequential and parallel aggregate operations

Stream是一組用來處理陣列、集合的API

Java 8之所以費這麼大功夫引入函數語言程式設計,原因有二:

程式碼簡潔函數語言程式設計寫出的程式碼簡潔且意圖明確,使用stream介面讓你從此告別for迴圈。

多核友好, Java函數語言程式設計使得編寫並行程式從未如此簡單,你需要的全部就是呼叫一下parallel()方法。

Stream特性

  1. 不是資料結構,沒有內部儲存
  2. 不支援索引訪問
  3. 延遲計算
  4. 支援並行
  5. 很容易生成陣列或集合(List, Set)
  6. 支援過濾,查詢,轉換,彙總,聚合等操作

Stream執行機制

  1. Stream分為 源source, 中間操作,終止操作
  2. 流的源可以是一個陣列、一個集合、一個生成器方法,一個I/O通道等等。
  3. 一個流可以有零個和或者多箇中間操作,每一箇中間操作都會返回一個新的流,供下一個操作使用。一個流只會有一個終止操作
  4. Stream只有遇到終止操作,它的源才開始執行遍歷操作

Stream的建立

  1. 通過陣列
  2. 通過集合來
  3. 通過Stream.generate方法來建立
  4. 通過Stream.iterate方法來建立
  5. 其他API建立

Stream常用API

中間操作

過濾 filter

去重 distinct

排序 sorted

擷取 limit、 skip

轉換 map/flatMap

其他 peek

終止操作

迴圈 forEach

計算 min、 max、 count、 average

匹配 anyMatch、 allMatch、 noneMatch、 findFirst、 findAny

匯聚 reduce

收集器 toArray collect

未完待續~~

相關文章