Stream API
Stream API
A sequence of elements supporting sequential and parallel aggregate operations
Stream是一組用來處理陣列、集合的API
Java 8之所以費這麼大功夫引入函數語言程式設計,原因有二:
程式碼簡潔函數語言程式設計寫出的程式碼簡潔且意圖明確,使用stream介面讓你從此告別for迴圈。
多核友好, Java函數語言程式設計使得編寫並行程式從未如此簡單,你需要的全部就是呼叫一下parallel()方法。
Stream特性
- 不是資料結構,沒有內部儲存
- 不支援索引訪問
- 延遲計算
- 支援並行
- 很容易生成陣列或集合(List, Set)
- 支援過濾,查詢,轉換,彙總,聚合等操作
Stream執行機制
- Stream分為 源source, 中間操作,終止操作
- 流的源可以是一個陣列、一個集合、一個生成器方法,一個I/O通道等等。
- 一個流可以有零個和或者多箇中間操作,每一箇中間操作都會返回一個新的流,供下一個操作使用。一個流只會有一個終止操作
- Stream只有遇到終止操作,它的源才開始執行遍歷操作
Stream的建立
- 通過陣列
- 通過集合來
- 通過Stream.generate方法來建立
- 通過Stream.iterate方法來建立
- 其他API建立
Stream常用API
中間操作
過濾 filter
去重 distinct
排序 sorted
擷取 limit、 skip
轉換 map/flatMap
其他 peek
終止操作
迴圈 forEach
計算 min、 max、 count、 average
匹配 anyMatch、 allMatch、 noneMatch、 findFirst、 findAny
匯聚 reduce
收集器 toArray collect
未完待續~~
相關文章
- Java8 Lambda表示式與Stream API (二): Stream API的使用JavaAPI
- Java8的Stream API使用JavaAPI
- Java8新特性--Stream APIJavaAPI
- Java8 Stream常用API整理JavaAPI
- Java8中的Stream APIJavaAPI
- Java 8新特性(二):Stream APIJavaAPI
- java8 Stream APi 入門JavaAPI
- JTCR-Stream API-23API
- 7個Java Stream API面試題JavaAPI面試題
- java .stream(). 使用介紹 Streams APIJavaAPI
- Java 8 Stream API 轉換到 Kotlin 集合APIJavaAPIKotlin
- Java8 - Stream API快速入門JavaAPI
- Java 8 Stream Api 中的 peek 操作JavaAPI
- Java Stream API groupingBy()介紹JavaAPI
- Java 10中Stream API不可變集合JavaAPI
- Node.js 中 Stream API 的使用Node.jsAPI
- Go語言實現的Java Stream APIGoJavaAPI
- Java8中的 lambda 和Stream APIJavaAPI
- 模仿Java Stream API 運算元組/切片JavaAPI
- Java 8中的Stream API使用指南JavaAPI
- Java Stream API:實現 Kruskal 演算法JavaAPI演算法
- 關於 Node.js Stream API 的用法概述Node.jsAPI
- Java8新特性第3章(Stream API)JavaAPI
- Java 8 Stream API: 深入理解與高效使用JavaAPI
- Java 8 Streams API:對Stream分組和分割槽JavaAPI
- Java 8新特性之旅:使用Stream API處理集合JavaAPI
- 使用Java Stream API中DistinctBy刪除重複資料JavaAPI
- NodeJS Stream(可讀流、可寫流) API解讀NodeJSAPI
- node中的Buffer/fs/Stream的一些常用apiAPI
- 13. 尚矽谷_Java8新特性_Stream API 練習JavaAPI
- Java Stream和Collection比較:何時以及如何從Java API返回Stream而不是集合Collection? - TomaszKiełbowiczJavaAPI
- JDK 8 新特性之函數語言程式設計 → Stream APIJDK函數程式設計API
- Java9系列第6篇-Stream流API的增強JavaAPI
- 使用Java 8的Stream API列出ZIP檔案中的條目JavaAPI
- Java-stream(1) Stream基本概念 & Stream介面Java
- stream
- 使用dataX-stream2stream/stream2mysql/mysql2mysql/mysql2streamMySql
- Java StreamJava