java8有兩大新特性,一個是lambda,一個是Steam,記錄一下Stream表達式的學習。
1、Sream簡單介紹
Srream用來處理集合或者數組的流,可以進行查找、刪選、映射等操作,可以替換for循環。
2、注意點
①Stream 自己不會存儲元素。
②Stream 不會改變源對象。相反,他們會返回一個持有結果的新Stream。
③Stream 操作是延遲執行的。這意味着他們會等到需要結果的時候才執行,也被稱爲惰性求值。
3、Sream使用
Stream使用分爲3步驟。
①、創建Sream流(list代表集合)
list.stream() : 返回一個順序流
list.parallelStream() : 返回一個並行流、
②、中間過程(希望對集合進行的數據處理)
filter() -->可以使用lambda表達式,可以從集合中去除符合條件的的數據(用來數據過濾)
distinct()-->去重;使用集合元素的hash()和equal()方法比較元素是否相等。
limit(long maxSize) -->滿足條件的流中元素的最大值。
skip(long n) -->跳過流中的n個元素。
map()-->使用lambda表達式,對集合中的數據進行操作,返回一個新的元素
sorted()-->對流中數據排序
sorted(Comparator comp)-->對流中數據按指定排序規則排序。
③、終止操作
collect(Collector c) ->將流中數據作爲集合返回
count() -->返回流中的數量
allMatch(Predicate p) -->檢查是否匹配所有元素
anyMatch(Predicate p) -->檢查是否至少匹配一個元素
noneMatch(Predicate p) -->檢查是否沒有匹配所有元素
findFirst() -->返回第一個元素