在Java8之後 開始支援Stream的API 目的是簡化批量運行的任務

Stream API提供兩個關鍵的抽象: Stream 和 Stream pipeline

Stream(流): 包含一系列元素,常見的來源是集合

Stream Pipeline(流管道): 流管道包含了一個流搭配一系列的中間操作,然後再加上一個終結操作

中間操作: 以某種方式轉換流 可能是映射(map),可能是過濾(filter),可能是排序(sorted)等等

終結操作: 對於所有中間操作所產生的最終運算流存到集合中(collect)或是印出所有元素(forEach) 或是藉由流中所有元素計算出一個新值(reduce)

 

 

stream() : 為集合創建串行流

filter() : 透過設置的條件過濾元素

map() : 資料轉換。將某一輸入資料轉換成另外一個輸出資料

collect() : 將流回傳集合

 

toMap() :

兩個參數: toMap的第一個參數是如何把流裡面的元素映射到key,第二個參數是如何把流裡面的元素映射到value

Output : 

a:apple
b:banana
c:cat

 

那今天如果stream的元素是("apple", "banana", "cat", "ball") 那就有兩個元素跑到同一個key,

那就會拋出IllegalStateException

toMap提供了第三個參數叫做merge function,也就是如果key一樣的話 要如何merge

Output:

a:apple
b:banana+ball
c:cat

 

groupingBy():

groupBy一個參數的時候 就是你要怎麼map到key

Output:

3:[cat, pet]
5:[apple]
6:[banana]

 

joining():

就是把一個字串流的字串接起來

Output: apple,banana,cat,ball

 

文章標籤
全站熱搜
創作者介紹

Mark Zhang 發表在 痞客邦 留言(0) 人氣(63)