JDK8新特性之Stream流

2022-09-07 15:45:26 字數 1337 閱讀 5924

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...