stream是資料渠道,用於運算元據源(集合,陣列等)所生成的元素序列。
"集合講的是資料,流講的是計算"
注:①stream自己不會儲存元素
②stream不會改變源物件。相反,他們會返回乙個持有結果的新的stream
③stream操作是延遲執行的。這意味著他們會等到需要結果的時候才執行。
步驟:①:建立stream(資料來源:如集合,陣列,獲得乙個流)
②:中間操作(乙個中間操作鏈,對資料來源的資料進行處理)
③:終止操作,終端操作(乙個 終止操作,執行中間操作鏈,並產生結果)
public class teststream
}
多個中間操作可以連線起來形成乙個流水線,除非流水線上觸發終止操作,否則中間操作不會執行任何的處理!而在終止操作時一次性全部處理,稱為""惰性求職。
public class streamtest2 );
//終止操作:一次性執行全部內容,即"惰性求值"
stream1 .foreach(system.out::println);
}//外部迭代
public void test2()
}@test
public void testlimit())
.limit(2)
//終止操作
.foreach(system.out::println);
}//跳過前2個取
@test
public void testskip()
//去重操作
@test
public void testdistinct()
//對映操作 (map -- 接收lambda,將元素轉化成其他形式或提取資訊,接收乙個函式作為引數,
該函式會被應用到每個元素上,並將其對映成乙個新的元素。
flatmap -- 接收乙個函式作為引數,將流中的每乙個值都換成另乙個流,然後把所有
流連線成乙個流)
@test
public void test23()
}
java8新特性之Stream 終止操作的多種方式
方法 簡述allmatch predicate p 檢查是否匹配所有元素 anymatch predicate 檢查是否至少匹配乙個元素 nonematch predicate p 檢查是否沒有匹配所有元素 findfirst 返回第乙個元素 findany 返回當前流中的任意元素 count 返回...
java8新特性之一lambda
lambda結合函式式介面使用,函式式介面 functional inte ce 就是乙個有且僅有乙個抽象方法,但是可以有多個非抽象方法的介面。1 可選型別宣告 不需要宣告引數型別,即直接可以寫引數,不需要宣告型別,編譯器可以自動識別型別 2 可選的引數圓括號 乙個引數可以不要圓括號,多個引數需要圓...
Java8 新特性 方法引用 一
package cn.com.zq.demo03.reference.test03.reference 方法引用 練習 使用系統已經存在的 方法 進行引用 為什麼要有方法引用?主要是對lambda表示式的優化 當 中 已經存在 對應的類 對應的物件 對應的this 對應的super 的時候 我們可以...