最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java?Stream流的常見生成和操作方法總結(jié)

 更新時間:2022年09月18日 09:45:14   作者:夏志121  
從Java1.8開始提出了Stream流的概念,本文將通過示例為大家詳細講解一下Stream流的常見生成和操作方法,感興趣的小伙伴可以了解一下

一、Stream流簡單示例

需求:

按照要求集合創(chuàng)建和遍歷

創(chuàng)建一個結(jié)合,存儲多個字符串元素

把集合中所有以"張"開頭的元素存儲到一個新的集合

把"張"開頭的集合中的長度為3的元素存儲到一個新的集合

遍歷上一步得到集合

原始方式示例代碼:

public class StreamDemo {
    public static void main(String[] args) {
        //創(chuàng)建一個集合,存儲多個字符串元素 
        ArrayList<String> list = new ArrayList<String>();
 
        list.add("心如音");
        list.add("流老蛋");
        list.add("王值");
        list.add("李爾");
        list.add("張新敏");
        list.add("張?zhí)炖?);
 
        //把集合中所有以"張"開頭的元素存儲到一個新的集合 
        ArrayList<String> zhangList = new ArrayList<String>();
 
        for(String s : list) {
            if(s.startsWith("張")) {
                zhangList.add(s);
            }
        }
 
        // System.out.println(zhangList); 
 
        //把"張"開頭的集合中的長度為3的元素存儲到一個新的集合 
        ArrayList<String> threeList = new ArrayList<String>();
 
        for(String s : zhangList) {
            if(s.length() == 3) {
                threeList.add(s);
            }
        }
 
        // System.out.println(threeList); 
 
        //遍歷上一步得到的集合 
        for(String s : threeList) {
            System.out.println(s);
        }
 
        System.out.println("--------");
        //Stream流來改進 
        // list.stream().filter(s -> s.startsWith("張")).filter(s -> s.length() == 3).forEach(s -> System.out.println(s));
        list.stream().filter(s -> s.startsWith("張")).filter(s -> s.length() == 3).forEach(System.out::println);
    }
}

使用Stream流示例代碼:

public class StreamDemo {
    public static void main(String[] args) {
        //創(chuàng)建一個集合,存儲多個字符串元素 
        ArrayList<String> list = new ArrayList<String>();
 
        list.add("心如音");
        list.add("流老蛋");
        list.add("王值");
        list.add("李爾");
        list.add("張新敏");
        list.add("張?zhí)炖?);
 
        //Stream流來改進
        list.stream().filter(s -> s.startsWith("張")).filter(s -> s.length() ==
                3).forEach(System.out::println);
    }
}

二、Stream流常見生成方式

生成Stream流的方式:

Collection體系集合

使用默認方法stream()生成流,default Stream stream()

Map體系集合

把Map轉(zhuǎn)成Set集合,間接生成流

數(shù)組

通過Stream接口的靜態(tài)方法of(T...values)生成流

代碼演示:

public class StreamDemo {
    public static void main(String[] args) {
        //Collection體系的集合可以使用默認方法stream()生成流 
        List<String> list = new ArrayList<String>();
        Stream<String> listStream = list.stream();
 
        Set<String> set = new HashSet<String>();
        Stream<String> setStream = set.stream();
 
        //Map體系的集合間接的生成流 
        Map<String,Integer> map = new HashMap<String, Integer>();
        Stream<String> keyStream = map.keySet().stream();
        Stream<Integer> valueStream = map.values().stream();
        Stream<Map.Entry<String, Integer>> entryStream = map.entrySet().stream();
 
        //數(shù)組可以通過Stream接口的靜態(tài)方法of(T... values)生成流 
        String[] strArray = {"hello","world","java"};
        Stream<String> strArrayStream = Stream.of(strArray);
        Stream<String> strArrayStream2 = Stream.of("hello", "world", "java");
        Stream<Integer> intStream = Stream.of(10, 20, 30);
    }
}

三、Stream流中間操作方法

概念:

中間操作的意思是,執(zhí)行完成此方法之后,Stream流依然可以繼續(xù)執(zhí)行其他操作

常見方法:

方法名說明
Stream fifilter(Predicate predicate)用于對流中的數(shù)據(jù)進行過濾
Stream limit(long maxSize)返回此流中的元素組成的流,截取前指定參數(shù)個數(shù)的數(shù)據(jù)
Stream skip(long n)跳過指定參數(shù)個數(shù)的數(shù)據(jù),返回由該流的剩余元素組成的流
static Stream concat(Stream a, Stream b)合并a和b兩個流為一個流
Stream distinct()返回由該流的不同元素(根據(jù)Object.equals(Object) )組成的流
Stream sorted()返回由此流的元素組成的流,根據(jù)自然順序排序
Stream sorted(Comparator comparator)返回由該流的元素組成的流,根據(jù)提供的Comparator進行排序
Stream map(Function mapper)返回由給定函數(shù)應用于此流的元素的結(jié)果組成的流
IntStream mapToInt(ToIntFunction mapper)返回一個IntStream其中包含將給定函數(shù)應用于此流的元素的結(jié)果

filter代碼示例

public class StreamDemo01 {
    public static void main(String[] args) {
        //創(chuàng)建一個集合,存儲多個字符串元素 
        ArrayList<String> list = new ArrayList<String>();
 
        list.add("心如音");
        list.add("流老蛋");
        list.add("王值");
        list.add("李爾");
        list.add("張新敏");
        list.add("張?zhí)炖?);
 
        //需求1:把list集合中以張開頭的元素在控制臺輸出 
        list.stream().filter(s -> s.startsWith("張")).forEach(System.out::println);
        System.out.println("--------");
 
        //需求2:把list集合中長度為3的元素在控制臺輸出 
        list.stream().filter(s -> s.length() == 3).forEach(System.out::println);
        System.out.println("--------");
 
        //需求3:把list集合中以張開頭的,長度為3的元素在控制臺輸出 
        list.stream().filter(s -> s.startsWith("張")).filter(s -> s.length() ==
                3).forEach(System.out::println);
    }
}

limit&skip代碼示例

public class StreamDemo02 {
    public static void main(String[] args) {
        //創(chuàng)建一個集合,存儲多個字符串元素 
        ArrayList<String> list = new ArrayList<String>();
 
        list.add("心如音");
        list.add("流老蛋");
        list.add("王值");
        list.add("李爾");
        list.add("張新敏");
        list.add("張?zhí)炖?);
 
        //需求1:取前3個數(shù)據(jù)在控制臺輸出 
        list.stream().limit(3).forEach(System.out::println);
        System.out.println("--------");
 
        //需求2:跳過3個元素,把剩下的元素在控制臺輸出 
        list.stream().skip(3).forEach(System.out::println);
        System.out.println("--------");
 
        //需求3:跳過2個元素,把剩下的元素中前2個在控制臺輸出 
        list.stream().skip(2).limit(2).forEach(System.out::println);
    }
}

concat&distinct代碼示例

public class StreamDemo03 {
    public static void main(String[] args) {
        //創(chuàng)建一個集合,存儲多個字符串元素 
        ArrayList<String> list = new ArrayList<String>();
 
        list.add("心如音");
        list.add("流老蛋");
        list.add("王值");
        list.add("李爾");
        list.add("張新敏");
        list.add("張?zhí)炖?);
 
        //需求1:取前4個數(shù)據(jù)組成一個流 
        Stream<String> s1 = list.stream().limit(4);
 
        //需求2:跳過2個數(shù)據(jù)組成一個流 
        Stream<String> s2 = list.stream().skip(2);
 
        //需求3:合并需求1和需求2得到的流,并把結(jié)果在控制臺輸出 
        Stream.concat(s1,s2).forEach(System.out::println); 
 
        //需求4:合并需求1和需求2得到的流,并把結(jié)果在控制臺輸出,要求字符串元素不能重復 
        Stream.concat(s1,s2).distinct().forEach(System.out::println);
    }
}

sorted代碼示例

public class StreamDemo04 {
    public static void main(String[] args) {
        //創(chuàng)建一個集合,存儲多個字符串元素 
        ArrayList<String> list = new ArrayList<String>();
 
        list.add("linqingxia");
        list.add("zhangmanyu");
        list.add("wangzuxian");
        list.add("liuyan");
        list.add("zhangmin");
        list.add("zhangwuji");
 
        //需求1:按照字母順序把數(shù)據(jù)在控制臺輸出 
        list.stream().sorted().forEach(System.out::println); 
 
        //需求2:按照字符串長度把數(shù)據(jù)在控制臺輸出 
        list.stream().sorted((s1,s2) -> {
            int num = s1.length()-s2.length();
            int num2 = num==0?s1.compareTo(s2):num;
            return num2;
        }).forEach(System.out::println);
    }
}

map&mapToInt代碼示例

public class StreamDemo05 {
    public static void main(String[] args) {
        //創(chuàng)建一個集合,存儲多個字符串元素 
        ArrayList<String> list = new ArrayList<String>();
 
        list.add("10");
        list.add("20");
        list.add("30");
        list.add("40");
        list.add("50");
 
        //需求:將集合中的字符串數(shù)據(jù)轉(zhuǎn)換為整數(shù)之后在控制臺輸出 
        list.stream().map(s -> Integer.parseInt(s)).forEach(System.out::println); 
        list.stream().map(Integer::parseInt).forEach(System.out::println); 
        list.stream().mapToInt(Integer::parseInt).forEach(System.out::println); 
 
        //int sum() 返回此流中元素的總和 
        int result = list.stream().mapToInt(Integer::parseInt).sum();
        System.out.println(result);
    }
}

到此這篇關(guān)于Java Stream流的常見生成和操作方法總結(jié)的文章就介紹到這了,更多相關(guān)Java Stream流內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java教程package和import訪問控制的步驟詳解

    Java教程package和import訪問控制的步驟詳解

    這篇文章主要為大家介紹了Java教程package和import訪問控制的步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • 詳解Java中Optional類的使用方法

    詳解Java中Optional類的使用方法

    Optional的作用是什么?他都有哪些方法?阿里規(guī)范點名說盡量用Optional來避免空指針,那么什么場景用Optional?本篇文章圍繞這三點來進行講解,感興趣的可以學習一下
    2022-05-05
  • intellij idea14打包apk文件和查看sha1值

    intellij idea14打包apk文件和查看sha1值

    這篇文章主要為大家詳細介紹了intellij idea14打包apk文件和查看sha1值,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • spring boot配合前端實現(xiàn)跨域請求訪問

    spring boot配合前端實現(xiàn)跨域請求訪問

    本篇文章主要介紹了spring boot配合前端實現(xiàn)跨域請求訪問,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • springboot整合quartz定時任務(wù)框架的完整步驟

    springboot整合quartz定時任務(wù)框架的完整步驟

    在做項目時有時候會有定時器任務(wù)的功能,比如某某時間應該做什么,多少秒應該怎么樣之類的,下面這篇文章主要給大家介紹了關(guān)于springboot整合quartz定時任務(wù)框架的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Java 在PDF中添加條形碼的兩種方法

    Java 在PDF中添加條形碼的兩種方法

    本文就將通過使用Java程序來演示如何在PDF文檔中添加Codebar、Code128A和Code39條形碼。通過實例代碼給大家講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-03-03
  • Springcloud sentinel安裝和使用方法解析

    Springcloud sentinel安裝和使用方法解析

    這篇文章主要介紹了Springcloud sentinel安裝和使用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12
  • Java實現(xiàn)XML與JSON秒級轉(zhuǎn)換示例詳解

    Java實現(xiàn)XML與JSON秒級轉(zhuǎn)換示例詳解

    這篇文章主要為大家介紹了Java實現(xiàn)XML與JSON秒級轉(zhuǎn)換示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • Java 向上轉(zhuǎn)型和向下轉(zhuǎn)型的詳解

    Java 向上轉(zhuǎn)型和向下轉(zhuǎn)型的詳解

    這篇文章主要介紹了 Java 向上轉(zhuǎn)型和向下轉(zhuǎn)型的詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Java 對 Cookie增刪改查的實現(xiàn)示例

    Java 對 Cookie增刪改查的實現(xiàn)示例

    這篇文章主要介紹了Java 對 Cookie增刪改查的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05

最新評論

鄂托克旗| 甘洛县| 博客| 泾源县| 孝感市| 光山县| 溧水县| 广宗县| 贵南县| 乌鲁木齐县| 双鸭山市| 板桥市| 家居| 平塘县| 罗定市| 凤台县| 奉节县| 新龙县| 会东县| 沙坪坝区| 新巴尔虎左旗| 锡林浩特市| 长丰县| 龙海市| 喀喇沁旗| 邮箱| 汕尾市| 韶山市| 安平县| 临湘市| 龙海市| 康马县| 孝感市| 海安县| 米林县| 莱芜市| 临城县| 理塘县| 容城县| 祁阳县| 公主岭市|