zoukankan      html  css  js  c++  java
  • 创建Stream

    1.创建Stream        

    create Stream from Collections;

    create Stream from values;

    create Stream from Arrays;

    craeate Stream from files;

    craeate Stream from functions

    代码举例:

     1 package com.cy.java8;
     2 
     3 import java.io.IOException;
     4 import java.nio.file.Files;
     5 import java.nio.file.Path;
     6 import java.nio.file.Paths;
     7 import java.util.Arrays;
     8 import java.util.List;
     9 import java.util.stream.Stream;
    10 
    11 public class CreateStream {
    12 
    13     public static void main(String[] args) {
    14         createStreamFromCollection().forEach(System.out::println);
    15 
    16         createStreamFromValues().forEach(System.out::println);
    17 
    18         createStreamFromArrays().forEach(System.out::println);
    19 
    20         createStreamFromFile().forEach(System.out::println);
    21     }
    22 
    23 
    24     /**
    25      * create stream from collection
    26      * 这里list的元素的顺序放到strem中不会改变,原来是什么样的顺序,stream中就是什么样。
    27      * @return
    28      */
    29     private static Stream<String> createStreamFromCollection(){
    30         List<String> list = Arrays.asList("hello", "world", "stream");
    31         return list.stream();
    32     }
    33 
    34     private static Stream<String> createStreamFromValues(){
    35         return Stream.of("hello", "world", "stream");
    36     }
    37 
    38     private static Stream<String> createStreamFromArrays(){
    39         String[] strings = new String[]{"hello", "world", "stream"};
    40         return Arrays.stream(strings);
    41     }
    42 
    43     /**
    44      * create stream from file
    45      * @return
    46      */
    47     private static Stream<String> createStreamFromFile(){
    48         Path path = Paths.get("F:\IdeaProjects\Java8Learning\java8\src\main\java\com\cy\java8\CreateStream.java");
    49         Stream<String> lines = null;
    50         try {
    51             lines = Files.lines(path);
    52         } catch (IOException e) {
    53             throw new RuntimeException(e);
    54         }
    55         return lines;
    56     }
    57 }

    打印结果如下:

    hello
    world
    stream
    hello
    world
    stream
    hello
    world
    stream
    package com.cy.java8;
    
    import java.io.IOException;
    ....
    把CreateStream.java文件分行打印出来了...
    

    2.创建Stream        

    create stream from Stream.iterate;

    create stream from Stream.generate;

    代码例子:

     1 package com.cy.java8;
     2 
     3 import lombok.AllArgsConstructor;
     4 import lombok.Getter;
     5 import lombok.ToString;
     6 
     7 import java.util.Random;
     8 import java.util.function.Supplier;
     9 import java.util.stream.Stream;
    10 
    11 public class CreateStream2 {
    12 
    13     public static void main(String[] args) {
    14         createStreamFromIterator().forEach(System.out::println);
    15 
    16         createStreamFromGenerate().forEach(System.out::println);
    17 
    18         createObjStreamFromGenerate().forEach(System.out::println);
    19     }
    20 
    21     /**
    22      * 这里会产生一个无限的Stream
    23      * 0,2,4,6,8...
    24      * 可以limit来获取指定个数
    25      * @return
    26      */
    27     private static Stream<Integer> createStreamFromIterator(){
    28         Stream<Integer> stream = Stream.iterate(0, a -> a + 2).limit(3);
    29         return stream;
    30     }
    31 
    32     /**
    33      * 也会创建一个无限的stream
    34      * 类似的IntStream,DoubleStream也是类似用法
    35      * @return
    36      */
    37     private static Stream<Double> createStreamFromGenerate(){
    38         Stream<Double> stream = Stream.generate(Math::random).limit(3);
    39         return stream;
    40     }
    41 
    42     /**
    43      * 自定义一个Obj的stream
    44      * @return
    45      */
    46     private static Stream<Obj> createObjStreamFromGenerate(){
    47         Stream<Obj> objStream = Stream.generate(new ObjSuppiler()).limit(3);
    48         return objStream;
    49     }
    50 
    51     static class ObjSuppiler implements Supplier<Obj>{
    52         private int index = 0;
    53         private Random random = new Random(System.currentTimeMillis());
    54 
    55         @Override
    56         public Obj get() {
    57             index = random.nextInt(100);
    58             return new Obj(index, "Name-"+index);
    59         }
    60     }
    61 
    62     @Getter
    63     @AllArgsConstructor
    64     @ToString
    65     static class Obj{
    66         private int id;
    67         private String name;
    68     }
    69 }

    打印如下:

    0
    2
    4
    0.2300226452750267
    0.48246633929281424
    0.051774439637685465
    CreateStream2.Obj(id=97, name=Name-97)
    CreateStream2.Obj(id=84, name=Name-84)
    CreateStream2.Obj(id=18, name=Name-18)
    

      

    -----

  • 相关阅读:
    Element 更新以及全局设置属性
    第二次作业
    软件工程---自我介绍
    git lfs
    SUID
    G1 log 解析
    CMS jvm flags详解
    java不安全证书报证书路径找不到问题
    记一次CMS unloading class 耗时长调查
    springboot jsp 在Linux中报404问题
  • 原文地址:https://www.cnblogs.com/tenWood/p/11503464.html
Copyright © 2011-2022 走看看