言
與IO流的 Input/Output Stream 不同,Stream 流操作是一個單向的資料處理操作,它不負責資料的儲存。可以將Stream流看做是對集合操作功能的增強,可以對集合的各種高效、便利的聚合操作( 類似SQL語句一樣的操作, 比如filter,map,sorted等)。同時配合Lambda表示式,極大的提升程式碼的優雅度。
Stream流不同於其他集合框架,它也不是某種資料結構,它並不會儲存元素,而是按需計算,這讓它使用起來更像一個高階的迭代器。
Stream不會改變資料來源,通常情況下會產生一個新的集合或一個值。
一個標準的Stream流流程:
資料來源(建立流) -> 資料處理 / 轉換(中間操作) -> 結果處理(終端操作)
中間操作會再次返回一個流,所以我們可以連結多箇中間操作;終端操作是對流操作的一個結束動作,一般返回 void或者一個非流的結果。
Stream流具有延遲執行特性,也就是說中間操作不會立即執行,只有呼叫終端操作的時候,流才會開始中間操作(遍歷、對映、過濾等)。並且Stream流提供了並行操作方式,在使用平行計算方式時資料會被自動分解成多段然後並行處理,最後將結果彙總,極大提升程式執行效率。