j**a.util.stream.stream
stream流和傳統的io流,它們都叫流,卻是兩個完全不一樣的概念和東西。
流可以簡單的說是處理資料集合的東西,可以申明式流式api來處理集合,而不是寫乙個邏輯實現。
流分為順序流及並行流,順序流即每個指令按順序執行,並行流即集合裡面的操作並行執行。
listnumbers = arrays.aslist(1, 2, 3);
// 順序流
numbers.stream().foreach(n -> system.out
.print(n));
//並行流
numbers.parallelstream().foreach(n -> system.out
.print(n));
以上例子,順序流總是輸出123
,而並行流則每次結果都不一定,並行流使用了forkjoinpool分而治之,所以明白了forkjoinpool原理的同學就知道並行流的真面目了。
1、呼叫集合的stream()方法或者parallelstream()方法。
2、stream.of()方法,有針對int,long的專用流intstream,longstream。
以下舉了流的一些常用的用法。
public class
streamtest
public
static
list
initlist
() }
輸出結果:
過濾-找出年紀大於18歲的人
user [username=oaby, age=23]
user [username=jennis, age=26]
user [username=tin, age=26]
user [username=army, age=26]
user [username=mack, age=19]
user [username=jobs, age=65]
user [username=jordan, age=23]
最大值-找出最大年紀的人
user [username=jobs, age=65]
對映-規納-求所有人的年紀總和
235分組-按年紀分組
建立-去重-統計
2
可以看出流運算元據集合很強大吧,但需要注意的是流只能執行一次,再次使用需要重要開啟。
更多的玩法可以自己去研究吧。
推薦閱讀
面經:史上最全j**a多執行緒面試題及答案
Jdk8新特性之Stream 3
對比一下序列流和並行流的效率 author wgr create 2020 3 31 public class demo07parallel after public void destory test public void testparallelstream test public void ...
Jdk8新特性之Stream 3
對比一下序列流和並行流的效率 author wgr create 2020 3 31 public class demo07parallel after public void destory test public void testparallelstream test public void ...
Jdk8新特性之排序
comparator提供的方法 author wgr create 2020 4 13 16 12 public class person public string getname public void setname string name public integer getage publ...