通俗地講,流是支持類似數據庫操作的“花哨的迭代器”。技術上講,它是從某個數據源獲得的支持聚合操作的元素序列。我們的視頻流媒體服務器EasyNVR、EasyDSS等,都是屬於流。
流接口在java.util.stream.Stream定義了許多操作,這些可以分為以下兩類:
- filter,sorted和map一樣的可以被連接起來形成一個管道的操作。
- collect,findFirst和allMatch一樣的終止管道並返回數據的操作。
可以被連接起來的操作被稱為中間操作,它們能被連接起來是因為都返回流。本文我們講一下JAVA8的流式編程——常用流操作。
JAVA8的常用流操作
方法還是很多的,根據操作返回結果不同,我們大致進行一下分類,也就是返回stream的就是中間操作,其他的,返回具體對象的就是最終操作:
中間操作:
filter(): 對元素進行過濾
sorted():對元素排序
map():元素映射
distinct():去除重復的元素
最終操作:
forEach():遍歷每個元素。
findFirst():找第一個符合要求的元素。
reduce():把Stream 元素組合起來。例如,字符串拼接,數值的 sum,min,max ,average 都是特殊的 reduce。
collect():返回一個新的集合。
min():找到最小值。
max():找到最大值。
需要注意的是,一般中間操作之后,都是為了進行最終操作,得到我們需要的對象。
示例:
Java8以前我們常用的編程范式是命令式編程,使用起來比較復雜和繁瑣,所以老是有很多新語言標榜自己的簡單明了,強調Java的笨重,現在Java也加入了函數式編程,是代碼看起來更加簡潔與靈活,java流式編程主要操作對象是集合,為集合添加了查找、過濾、分組、排序等一系列的增強操作,使用起來更加方便。