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
未完待續~~
相關文章
- JTCR-Stream API-23API
- Java Stream API groupingBy()介紹JavaAPI
- Java 8 Stream API 轉換到 Kotlin 集合APIJavaAPIKotlin
- java .stream(). 使用介紹 Streams APIJavaAPI
- Java8中的Stream APIJavaAPI
- Java8 Stream常用API整理JavaAPI
- Java8的Stream API使用JavaAPI
- Java8新特性--Stream APIJavaAPI
- java8 Stream APi 入門JavaAPI
- 7個Java Stream API面試題JavaAPI面試題
- Java 8 Stream Api 中的 peek 操作JavaAPI
- Java8 - Stream API快速入門JavaAPI
- Java 10中Stream API不可變集合JavaAPI
- Java Stream API:實現 Kruskal 演算法JavaAPI演算法
- Go語言實現的Java Stream APIGoJavaAPI
- Java8中的 lambda 和Stream APIJavaAPI
- Java 8 Stream API: 深入理解與高效使用JavaAPI
- 關於 Node.js Stream API 的用法概述Node.jsAPI
- NodeJS Stream(可讀流、可寫流) API解讀NodeJSAPI
- 使用Java Stream API中DistinctBy刪除重複資料JavaAPI
- node中的Buffer/fs/Stream的一些常用apiAPI
- Java Stream和Collection比較:何時以及如何從Java API返回Stream而不是集合Collection? - TomaszKiełbowiczJavaAPI
- 13. 尚矽谷_Java8新特性_Stream API 練習JavaAPI
- Java9系列第6篇-Stream流API的增強JavaAPI
- JDK 8 新特性之函數語言程式設計 → Stream APIJDK函數程式設計API
- Java-stream(1) Stream基本概念 & Stream介面Java
- stream
- 使用dataX-stream2stream/stream2mysql/mysql2mysql/mysql2streamMySql
- Java9第四篇-Reactive Stream API響應式程式設計JavaReactAPI程式設計
- Stream流
- elysia stream
- Java StreamJava
- node stream
- [Javascript] Refactor blocking style code to stream style for fetching the stream dataJavaScriptBloC
- stream常用操作
- Stream流求和
- Java Lambda StreamJava
- centos stream 8CentOS