前面我们都在讲如何过滤、匹配,统计、映射、收集等等,接下来看看怎么样生成Stream
Stream stream = Stream.of("Java 8 ", "Lambdas ", "In ", "Action");
Stream.of()可以生成流,参数会逐个填充进去。
- int[] numbers = {2, 3, 5, 7, 11, 13};
-
- int sum = Arrays.stream(numbers).sum();
Arrays.stream()在创建流时,传入数组对象,基础类型会生成对应的IntStream、LongStream、DoubleStream。
- long uniqueWords = 0;
-
- try(Stream
lines = Files.lines(Paths.get("data.txt"), Charset.defaultCharset())){ - uniqueWords = lines.flatMap(line -> Arrays.stream(line.split(" "))).distinct().count();
- }
- catch(IOException e){
- }
-
Files.lines()用于打开文件读取到流,每一行为一个字符串。
- Stream.iterate(0, n -> n + 2)
- .limit(10)
- .forEach(System.out::println);
iterate会产生一个无界流(没有边界,如果不加控制就是死循环),这里使用limit控制了数量
两个入参,一个是初始值,第二个是递归算法,根据前一个值计算新的值。
- Stream.generate(Math::random)
- .limit(5)
- .forEach(System.out::println);
generate(Supplier
- List
list = new ArrayList(); -
- Stream
stream = list.stream();