參考鏈接: 用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);