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