创建Stream

下面介绍四种方法介绍如何创建Stream

通过集合

Java8 中的 Collection 接口被扩展,提供了两个获取流的方法,这两个方法是默认实现方法:

  • default Stream stream() : 返回一个顺序流

  • default Stream parallelStream() :

ArrayList<Integer> nums = new ArrayList<>();
nums.add(32);
……
Stream<Integer> stream1 = nums.stream();
Stream<Integer> stream2 = nums.parallelStream();

通过数组

Arrays工具类提供steam方法来创建stream。

int[] ints = new int[5];
ints[0] = 32;
……
IntStream stream = Arrays.stream(ints);

重载形式,能够处理对应基本类型的数组:

  • public static IntStream stream(int[] array)
  • public static LongStream stream(long[] array)
  • public static DoubleStream stream(double[] array)

通过Stream的of()

Stream类提供一个静态方法of来获取一个Stream实例

public static<T> Stream<T> of(T... values) :  返回一个流
Stream<String> stream = Stream.of("java", "c++", "linux", "php", "mysql");

创建无限流

可以使用静态方法 Stream.iterate() 和 Stream.generate(),创建无限流。

迭代

​ public static Stream iterate(final T seed, final UnaryOperator f)

生成

​ public static Stream generate(Supplier s)

// 创建偶数流
Stream<Integer> iterate = Stream.iterate(0, t -> t + 2);
iterate.limit(10).forEach(System.out::println);

// 随机数流
Stream<Double> stream = Stream.generate(Math::random);
stream.limit(10).forEach(System.out::println);