StreamAPI的使用學習與總結

2021-10-07 09:44:44 字數 2675 閱讀 4736

stream api

stream操作的三個步驟

建立stream

中間操作(過濾、map)

終止操作

stream的建立:

// 1,校驗通過collection 系列集合提供的stream()或者parallestream()

list list = new arraylist<>();

strean stream1 = list.stream();

// 2.通過arrays的靜態方法stream()獲取陣列流

string str = new string[10];

streamstream2 = arrays.stream(str);

// 3.通過stream類中的靜態方法of

streamstream3 = stream.of("aa","bb","cc");

// 4.建立無限流

// 迭代

streamstream4 = stream.iterate(0,(x) -> x+2);

//生成

stream.generate(() ->math.random());

stream的中間操作:

/**

stream的終止操作:

/*** 查詢和匹配

* allmatch-檢查是否匹配所有元素

* anymatch-檢查是否至少匹配乙個元素

* nonematch-檢查是否沒有匹配所有元素

* findfirst-返回第乙個元素

* findany-返回當前流中的任意元素

* count-返回流中元素的總個數

* max-返回流中最大值

* min-返回流中最小值

*/

/**

* 檢查是否匹配元素

*/boolean b1 = emps.stream()

.allmatch((e) -> e.getstatus().equals(employee.status.busy));

system.out.println(b1);

boolean b2 = emps.stream()

.anymatch((e) -> e.getstatus().equals(employee.status.busy));

system.out.println(b2);

boolean b3 = emps.stream()

.nonematch((e) -> e.getstatus().equals(employee.status.busy));

system.out.println(b3);

optionalopt = emps.stream()

.findfirst();

system.out.println(opt.get());

// 並行流

optionalopt2 = emps.parallelstream()

.findany();

system.out.println(opt2.get());

long count = emps.stream()

.count();

system.out.println(count);

optionalmax = emps.stream()

.max((e1, e2) -> double.compare(e1.getsalary(), e2.getsalary()));

system.out.println(max.get());

optionalmin = emps.stream()

.min((e1, e2) -> double.compare(e1.getsalary(), e2.getsalary()));

system.out.println(min.get());

還有功能比較強大的兩個終止操作 reduce和collect

reduce操作: reduce:(t identity,binaryoperator)/reduce(binaryoperator)-可以將流中元素反覆結合起來,得到乙個值

/*** reduce :規約操作

*/list list = arrays.aslist(1,2,3,4,5,6,7,8,9,10);

integer count2 = list.stream()

.reduce(0, (x, y) -> x + y);

system.out.println(count2);

optionalsum = emps.stream()

.map(employee::getsalary)

.reduce(double::sum);

system.out.println(sum);

collect操作:collect-將流轉換為其他形式,接收乙個collection介面的實現,用於給stream中元素做彙總的方法

/*** collect:收集操作

*/

listagelist = emps.stream()

.map(employee::getage)

.collect(collectors.tolist());

agelist.stream().foreach(system.out::println);

使用Stream API進行函式式程式設計

stream api 是真正的使用函式式程式設計風格的 api。可以提供我們編碼的效率 簡化 獲取stream的四種方式 public class test1 streamstream arrays.stream arr public class test1 public class test1 p...

java 8 Stream API 學習總結

建立stream流的方法 1.可以通過collection系列集合提供的stream 或者parallelstream listls new arraylist streamstream1 ls.stream 2.通過arrays中的靜態方法stream 獲取陣列流 string strs new ...

關於JDK8中Stream API的常見使用方法

產生乙個全新的流,和資料來源沒有關係 資料來源不受影響 a 建立stream方式 1 collection 例如 new arraylist stream 2 陣列 arrays.stream 3 通過stream類中的靜態方法of 4 建立無限流 建立無線流 迭代方式 test public vo...