# :-: Stream 簡介
# Stream
## 關于流
### 什么是流?
流是Java8引入的全新概念,它用來處理集合中的數據,暫且可以把它理解為一種高級集合。
眾所周知,集合操作非常麻煩,若要對集合進行篩選、投影,需要寫大量的代碼,而流是以聲明的形式操作集合,它就像SQL語句,我們只需告訴流需要對集合進行什么操作,它就會自動進行操作,并將執行結果交給你,無需我們自己手寫代碼。
因此,流的集合操作對我們來說是透明的,我們只需向流下達命令,它就會自動把我們想要的結果給我們。由于操作過程完全由Java處理,因此它可以根據當前硬件環境選擇最優的方法處理,我們也無需編寫復雜又容易出錯的多線程代碼了。
### 流的特點
1. 只能遍歷一次
我們可以把流想象成一條流水線,流水線的源頭是我們的數據源(一個集合),數據源中的元素依次被輸送到流水線上,我們可以在流水線上對元素進行各種操作。
一旦元素走到了流水線的另一頭,那么這些元素就被“消費掉了”,我們無法再對這個流進行操作。當然,我們可以從數據源那里再獲得一個新的流重新遍歷一遍。
2. 采用內部迭代方式
若要對集合進行處理,則需我們手寫處理代碼,這就叫做外部迭代。
而要對流進行處理,我們只需告訴流我們需要什么結果,處理過程由流自行完成,這就稱為內部迭代。
### 流的操作種類
- 序
- 快速開始
- 環境要求
- 環境準備
- 工程導入
- 工程運行
- 技術基礎
- Java8
- Lambda
- Lambda 受檢異常處理
- Stream 簡介
- Stream API 一覽
- Stream API(上)
- Stream API(下)
- Optional 干掉空指針
- 函數式接口
- 新的日期 API
- Lombok
- SpringMVC
- Swagger
- Mybaties
- Mybaties-plus
- 開發初探
- 新建微服務工程
- 第一個API
- API鑒權
- API響應結果
- Redis 緩存
- 第一個CRUD
- 建表
- 建Entity
- 建Service和Mapper
- 新增API
- 修改API
- 刪除API
- 查詢API
- 單條查詢
- 多條查詢
- 分頁
- 微服務遠程調用
- 聲明式服務調用Feign
- 熔斷機制 Hystrix
- 開發進階