免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Java - java8新特性之Stream

參考:https://blog.csdn.net/y_k_y/article/details/84633001

一、概述

  Stream 是 Java8 中處理集合的關(guān)鍵抽象概念,它可以指定你希望對集合進行的操作,可以執(zhí)行非常復(fù)雜的查找、過濾和映射數(shù)據(jù)等操作。使用Stream API 對集合數(shù)據(jù)進行操作,就類似于使用 SQL 執(zhí)行的數(shù)據(jù)庫查詢。也可以使用 Stream API 來并行執(zhí)行操作。簡而言之,Stream API 提供了一種高效且易于使用的處理數(shù)據(jù)的方式。

二、分類

stream操作分類
中間操作無狀態(tài)(Statusless)filter() ? ?map() ? mapToInt() ? mapToLong() ? mapToDouble()flatMap() ? flatMapToInt()flatMapToLong() ??flatMapToDouble()unordered() ? ?pee()
有狀態(tài)(Statusful)distinct() ? sorted() ? limit() ? skip()
結(jié)束操作非短路操作foreach() ? ? ?forEachOrdered() ? ??toArray() ? ? ? toList() ? collect() ? ??max() ? min() ? ?count()
短路操作anyMatch() ? allMatch() ? noneMatch()findFirst() ? findAny()

?

  解釋:

    ?無狀態(tài):指元素的處理不受之前元素的影響;

? ? ?  有狀態(tài):指該操作只有拿到所有元素之后才能繼續(xù)下去。

? ? ?  非短路操作:指必須處理所有元素才能得到最終結(jié)果;

? ?   ?短路操作:指遇到某些符合條件的元素就可以得到最終結(jié)果,如 A || B,只要A為true,則無需判斷B的結(jié)果

?

三、具體用法

  1. 創(chuàng)建流
    • 使用Collection下的stream() 和 parallelStream() 方法
      List<String> list=new ArrayList<>();//  .stream()獲取一個順序流Stream<String> stream=list.stream();//  .parallelStream()獲取一個并行流Stream<String> parallelStream=list.parallelStream();
    • 使用Array中的stream()方法
      String[] arr = {"1", "3", "2", "5", "1" };Stream<String> stream1=Arrays.stream(arr);
    • 使用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   2).limit(6);stream2.forEach(System.out::println); // 0 2 4 6 8 10 Stream<Double> stream3 = Stream.generate(Math::random).limit(2);stream3.forEach(System.out::println);
    • 使用 BufferedReader.lines() 方法,將每行內(nèi)容轉(zhuǎn)成流
      BufferedReader reader = new BufferedReader(new FileReader("F:\\test_stream.txt"));Stream<String> lineStream = reader.lines();lineStream.forEach(System.out::println);
    • 使用 Pattern.splitAsStream() 方法,將字符串分隔成流
      Pattern pattern = Pattern.compile(",");Stream<String> stringStream = pattern.splitAsStream("a,b,c,d");stringStream.forEach(System.out::println);

      ?

        
  2. 流的中間操作
    • 篩選和切片
      • filter:filter的使用方式為: filter(item -> item的邏輯判斷 ) ,其中filter會保留判斷條件為true的記錄  
      • distinct():去除重復(fù)元素
      • sorted():對流中的元素排序
      • limit(n):獲取n個元素 
      • skip():跳過n個元素
                Integer[] arr = {6, 3, 7, 3, 6,11,9, 10};        List<Integer> list = Arrays.asList(arr);        List<Integer> newlist = new ArrayList<>(list);        List<Integer> sList = newlist.stream()                .filter(ele -> ele>5)             // {6,7,6,11,9,10}                .distinct()                       // {6,7,11,9,10}                .sorted()                         // {6,7,9,10,11}

        ?

    • 映射
      • map:map方法用于映射每個元素到對應(yīng)的結(jié)果
        # 輸出元素對應(yīng)的平方數(shù)               Integer[] arr = {1,2,3,4,5};        List<Integer> list = Arrays.asList(arr);        List<Integer> newlist = new ArrayList<>(list);        Stream<Integer> stream= newlist.stream()                .map(i ->i*i);        stream.forEach(System.out::println);      // {1,3,9,16,25}   

?

來源:https://www.icode9.com/content-1-657251.html
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Stream流
Java 8 中的 Streams API 詳解
java8之stream
Stream的創(chuàng)建
Java進階 之 Stream流
java8關(guān)于steam流的日常操作
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服