在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
