友情提示:若是要看懂Stream,得先把Lambda先搞明白,能夠去Java8-Lambda表達式瞧一瞧java
Stream 是 Java8 中處理集合的關鍵抽象概念,它能夠指定你但願對集合進行的操做,能夠執行很是複雜的查找、過濾和映射數據等操做。使用Stream API 對集合數據進行操做,就相似於使用 SQL 執行的數據庫查詢。也能夠使用 Stream API 來並行執行操做。簡而言之,Stream API 提供了一種高效且易於使用的處理數據的方式。數據庫
注意先有集合再有流,流是去操做集合的,「集合講的是數據,流講的是計算!」
三個注意的點:spa
Stream 它不會存儲元素。
Stream 不會改變源對象。相反,他們會返回一個持有結果的新Stream。
Stream 操做是延遲執行的。這意味着他們會等到須要結果的時候才執行.net
第一步建立流code
第二步對數據進行中間操做對象
第三步終止操做,好比數據展示,存放等blog
package com.jv.java8.stream; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Stream; import org.junit.Test; import com.jv.bean.Cust; public class TestStream { //建立流,並作簡單的演示 @Test public void test1() { //1.經過集合的實例方法stream()或者parallelStream()建立 List<String> l = new ArrayList(); l.add("重慶真美"); l.add("火鍋好吃"); l.add("妹子好看"); Stream<String> sm1 = l.stream(); sm1.forEach(System.out::println); //2.經過Arrays建立 Cust[] cs = new Cust[10]; Stream<Cust> sm2 = Arrays.stream(cs); //3.建立無限流 Stream<Integer> sm3 = Stream.iterate(0, (x)->x+3); sm3.limit(15).forEach(System.out::println); //4.使用Stream.of靜態方法建立 Stream<String> sm4 = Stream.of("合川桃片","江津老白乾","豐都鬼城","李子壩輕軌站"); sm4.forEach(System.out::println); } }
使用Arrays.stream和Stream.of建立流還有不少重載的方法,老鐵們能夠本身去多看看,好比Arrays.stream有一個帶泛型的方法,表示能夠存聽任何對象get
注:中間操做是延遲執行的,只有當終止操做出現時,中間操做纔會執行。it
中間操做須要單獨開篇進行詳述,敬請期待。。。java8