免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

含具體案例 Java8新特性之Stream流

一、概述??Stream 流是 Java 8 新提供給開發(fā)者的一組操作集合的 API , 將要處理的元素集合看作一種流 ,  流在管道中傳輸 ,  并且可以在管道的節(jié)點上進行處理 ,  比如篩選、排序、聚合等 。元素流在管道中經(jīng)過中間操作(intermediate operation)的處理 , 最后由終端操作 (terminal operation) 得到前面處理的結(jié)果 。Stream 流可以極大的提高開發(fā)效率 , 也可以使用它寫出更加簡潔明了的代碼 。我自從接觸過 Stream 流之后 , 可以說對它愛不釋手 。
二、Stream的創(chuàng)建Stream可以通過集合數(shù)組創(chuàng)建 。
1、通過 java.util.Collection.stream() 方法用集合創(chuàng)建流
List<String> list = Arrays.asList("a", "b", "c");// 創(chuàng)建一個順序流Stream<String> stream = list.stream();// 創(chuàng)建一個并行流Stream<String> parallelStream = list.parallelStream();2、使用java.util.Arrays.stream(T[] array)方法用數(shù)組創(chuàng)建流
int[] array={1,3,5,7,9};IntStream stream = Arrays.stream(array);3、使用Stream的靜態(tài)方法:of()、iterate()、generate()
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6);Stream<Integer> stream2 = Stream.iterate(0, (x) -> x + 3).limit(4);stream2.forEach(System.out::println);Stream<Double> stream3 = Stream.generate(Math::random).limit(3);stream3.forEach(System.out::println);輸出結(jié)果:
0 3 6 90.67961569092719940.19143142088542830.8116932592396652stream和parallelStream的簡單區(qū)分:
stream是順序流 , 由主線程按順序?qū)α鲌?zhí)行操作 , 而parallelStream是并行流 , 內(nèi)部以多線程并行執(zhí)行的方式對流進行操作 , 但前提是流中的數(shù)據(jù)處理沒有順序要求 。如果流中的數(shù)據(jù)量足夠大 , 并行流可以加快處速度 。除了直接創(chuàng)建并行流 , 還可以通過parallel()把順序流轉(zhuǎn)換成并行流:
Optional<Integer> findFirst = list.stream().parallel().filter(x->x>6).findFirst();三、Stream的使用(具體案例)案例中用到的員工類:/** * @description: 員工 * @author: admin */@Datapublic class Person {/*** 姓名*/private String name;/*** 薪資*/private Integer salary;/*** 年齡*/private Integer age;/*** 性別*/private String sex;/*** 地區(qū)*/private String area;public Person(String name, Integer salary, Integer age, String sex, String area) {this.name = name;this.salary = salary;this.age = age;this.sex = sex;this.area = area;}}1.遍歷/匹配(foreach/find/match)Stream也是支持類似集合的遍歷和匹配元素的 , 只是Stream中的元素是以Optional類型存在的 。Stream的遍歷、匹配非常的簡單 。
public static void main(String[] args) {List<Integer> list = Arrays.asList(7, 6, 9, 3, 8, 2, 1);// 遍歷輸出符合條件的元素List<Integer> collect = list.stream().filter(x -> x > 6).collect(Collectors.toList());// 匹配第一個Optional<Integer> findFirst = list.stream().filter(x -> x > 6).findFirst();// 匹配任意(適用于并行流)Optional<Integer> findAny = list.parallelStream().filter(x -> x > 6).findAny();// 是否包含符合特定條件的元素boolean anyMatch = list.stream().anyMatch(x -> x > 6);System.out.println("大于6的值:" + collect);System.out.println("匹配第一個值:" + findFirst.get());System.out.println("匹配任意一個值:" + findAny.get());System.out.println("是否存在大于6的值:" + anyMatch);}結(jié)果:

含具體案例 Java8新特性之Stream流

文章插圖
2.篩選(filter) 篩選 , 是按照一定的規(guī)則校驗流中的元素 , 將符合條件的元素提取到新的流中的操作 。

經(jīng)驗總結(jié)擴展閱讀