Stream

前言

Stream是集合元素的函數模型,支持順序和並行聚合操做的元素序列,不是集合,能夠簡單的理解爲高級版的Iterator;java

獲取Stream流的方式

當咱們使用一個流的時候,一般包括三個基本步驟:獲取一個數據源(source)→ 數據轉換→執行操做獲取想要的結果數組

每次轉換原有 Stream 對象不改變,返回一個新的 Stream 對象(能夠有屢次轉換),這就容許對其操做能夠像鏈條同樣排列,變成一個管道app

1. JDK8以後,在Collection<E>接口增長了一個默認的方法: default Stream<E>  stream() 能夠將集合轉化爲流;函數

2. JDK8以後,API提供了一個新的接口java.util.stream,該接口中有一個靜態方法of(T...values)能夠獲取Stream流spa

Stream源

Collection & 數組 & 其餘對象

 經常使用方法

Stream API方法能夠分爲2類blog

延遲方法:返回值仍然是Stream流,所以能夠支持鏈式調用;接口

終結方法:的返回值再也不是Stream流自己,所以不在支持鏈式調用,包括count()、forEach()、collect()、reduce()、*Match()、find*();ip

filter

Stream<T> filter(Predicate<? super  T> predicate) 該方法將一個流轉化爲另外一個子集流it

 

map

<R> Stream<R> map(Function<? supper T, ? extends R) mapper);該方法將流中的元素映射到另外一個流中;

flatMap

Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper) 方法將子流合併到主流中

 

limit

Stream<T> limit(long maxSize) 方法能夠對流中元素進行截取,只取前N個;

`

skip

Steam<T> skip(long n) 方法表示跳過流中前n個元素,保留以後的元素;

 

 

 concat

static <T> Stream<T> concat(Stream<? extends T> a, Stream<? extends T> b) 該方法將兩個流合併成一個流;

 count

long cout() 該方法用來統計流中有幾個元素;

forEach

void forEach(Consumer<? super T> action) 該方法接受一個Consumer接口函數,每一個流元素都交給該函數處理;

相關文章
相關標籤/搜索