参考链接: 用Java创建流的10种方法
java8中的流式操作是一个很重要的内容
1、通过 stream 方法把 List 或数组转换为流,如Arr.stream();
//通过stream方法把List或数组转换为流
Arrays.asList("a1", "a2", "a3").stream().forEach(System.out::println);
Arrays.stream(new int[]{1, 2, 3}).forEach(System.out::println);
2、通过 Stream.of 方法直接传入多个元素构成一个流;
//通过Stream.of方法直接传入多个元素构成一个流
String[] arr = {"a", "b", "c"};
Stream.of(arr).forEach(System.out::println);
Stream.of("a", "b", "c").forEach(System.out::println);
3、通过 Stream.iterate 方法使用迭代的方式构造一个无限流,然后使用 limit 限制流元素 个数
//通过Stream.iterate方法使用迭代的方式构造一个无限流,然后使用limit限制流元素个数
Stream.iterate(2, item -> item * 2).limit(10).forEach(System.out::println) //如这个将会生成 2,4,8,16,32,64,128.256,512,1024
Stream.iterate(BigInteger.ZERO, n -> n.add(BigInteger.TEN)).limit(10).forEach(System.out::println)
4、通过 Stream.generate 方法从外部传入一个提供元素的 Supplier 来构造无限流,然后 使用 limit 限制流元素个数; 流里面的元素都是一样的,都是Supplier 提供的值,适用于常量的流或随机数的流
//通过Stream.generate方法从外部传入一个提供元素的Supplier来构造无限流,然后使用limit限制
Stream.generate(() -> "test").limit(3).forEach(System.out::println); Stream.generate(Math::random).limit(10).forEach(System.out::println);
5、通过 IntStream 或 DoubleStream 构造基本类型的流。
//通过IntStream或DoubleStream构造基本类型的流
//演示IntStream和DoubleStream
//其中range与rangeClosed的区别是循环范围的右区间是否是闭包
IntStream.range(1, 3).forEach(System.out::println); // 1,2
IntStream.rangeClosed(1, 3).forEach(System.out::println); // 1,2,3
IntStream.range(0, 3).mapToObj(i -> "x").forEach(System.out::println);
DoubleStream.of(1.1, 2.2, 3.3).forEach(System.out::println);