美文网首页
黑猴子的家:Java 8 -> Stream 案例实操

黑猴子的家:Java 8 -> Stream 案例实操

作者: 黑猴子的家 | 来源:发表于2019-03-03 08:15 被阅读51次
    1、创建 Stream方式一:通过集合

    Java8 中的 Collection 接口被扩展,提供了两个获取流的方法
    (1)default Stream<E> stream() : 返回一个顺序流
    (2)default Stream<E> parallelStream() : 返回一个并行流

    package com.yinggu.demo10;
    import java.util.Arrays;
    import java.util.List;
    import java.util.function.Supplier;
    import java.util.stream.IntStream;
    import java.util.stream.Stream;
    import org.junit.Test;
    import com.yinggu.data.EmployeeData;
    import com.yinggu.domain.Employee;
    
     * @author 黑猴子的家 
     * https://www.jianshu.com/u/37fd8e2dff4c
     * 此类用于演示创建Stream
    
    public class TestStreamCreate {
          // 通过集合获取Stream对象
          @Test
          public void test1() {
                List<Employee> list = EmployeeData.getData();
                // 根据list集合获取Stream对象
                Stream<Employee> stream = list.stream();
                stream.forEach(System.out::println);
                System.out.println("---------------------------");
          }
    }
    
    2、创建 Stream方式二:通过数组

    Java8 中的 Arrays 的静态方法 stream() 可以获取数组流
    static <T> Stream<T> stream(T[] array): 返回一个流
    重载形式,能够处理对应基本类型的数组
    public static IntStream stream(int[] array)
    public static LongStream stream(long[] array)
    public static DoubleStream stream(double[] array)

    // 通过数组获取Stream对象
    @Test
    public void test2() {
          Integer[] arr = { 10, 20, 30 };
          // 根据数组获取Stream对象
          //IntStream stream1 = (IntStream) Arrays.stream(arr);
          Stream<Integer> stream2 = Arrays.stream(arr);
          stream2.forEach(System.out::println);
          System.out.println("---------------------------");
    }
    
    3、创建 Stream方式三:通过Stream的of()

    可以调用Stream类静态方法 of(), 通过显示值创建一个流。
    它可以接收任意数量的参数。
    public static<T> Stream<T> of(T... values) : 返回一个流

    // 通过制定的列表值获取Stream对象
    @Test
    public void test3() {
          Stream<String> stream = Stream.of("john", "lucy", "lily");
          stream.forEach(System.out::println);
          System.out.println("---------------------------");
    }
    
    4、创建 Stream方式四:创建无限流

    可以使用静态方法 Stream.iterate()Stream.generate(), 创建无限流。
    迭代 public static<T> Stream<T> iterate(final T seed, final UnaryOperator<T> f)生成public static<T> Stream<T> generate(Supplier<T> s)

    // 无限流
    @Test
    public void test4() {
          //匿名内部类
    //    Stream.generate(new Supplier<Double>() {
    //          @Override
    //          public Double get() {
    //                // TODO Auto-generated method stub
    //                return Math.random();
    //          }
    //    });
          //Lambda 表达式
          //Stream.generate( ()-> Math.random());
          Stream<Double> stream = Stream.generate(Math::random);
          stream.limit(5).forEach(System.out::println);
          //stream.forEach(System.out::println);
          System.out.println("---------------------------");
    }
    

    相关文章

      网友评论

          本文标题:黑猴子的家:Java 8 -> Stream 案例实操

          本文链接:https://www.haomeiwen.com/subject/uefjuqtx.html