1. 程式人生 > >Java8系列--Java Stream入門篇(流的操作)

Java8系列--Java Stream入門篇(流的操作)

1 Stream介面

1.1 介面情況

java.util.stream介面下共有DoubleStream、LongStream、IntStream、Stream四個介面,如下圖所示:
stream

1.2 流的分類和使用

其中,Stream介面定義了許多方法,大體可以分為兩類

  • 中間操作類
  • 終端操作類

一般來說,流的使用可以概括為三件事:

  • 一個數據源來執行一個查詢
  • 一箇中間操作鏈,形成一條流的流水線
  • 一個終端操作,執行流水線,並生成結果

1.3 結構圖

liucaozuo

2 中間操作

中間操作類的返回的是另一個流,即其返回值型別是流Stream。
例如,filter或sorted方法連線起來可以形成一個查詢操作,除非流水線上觸發一個終端操作,否則不會執行任何處理。
總之,中間操作只是各種操作的一個順序上的聯合,它們操作的物件是流,產生的物件也是各種各樣的流,只有在終端操作之後才能顯示最終的操作結果。


流的中間操作常有以下幾種:

操作 型別 返回型別 操作引數 函式描述符
filter 中間操作 Stream T Predicate T T -> boolean
map 中間操作 Stream R Function T,R T -> R
limit 中間操作 Stream T
sorted 中間操作 Stream T Comparator T (T,T) -> int
distinct 中間操作 Stream T

3 終端操作

流的終端操作會從流的流水線生成結果,其結果是任何不為流的值,比如List、Integer甚至是void。
常用的流的終端操作

操作 型別 目的
forEach 終端操作 消費流中的每個元素並對其應用Lambda。這一操作返回void
count 終端操作 返回流中元素的個數。這一操作返回long
collect 終端操作 把流歸約成一個集合,比如List、Map甚至是Integer。