005 Stream的创建

一 概述

  在我们使用Stream之前,我们首先就需要获得一个Stream.

在标准的Stream之中,我们可以通过下面的Stream获取Stream.

    //创建stream的方式
    
    //1.Collection接口
    /**
     *  default Stream<E> stream() {
        return StreamSupport.stream(spliterator(), false);
    }    
     */
    // 在jdk1.8之后,我们的Collection之中提供了Stream的创建方法
    
    @Test
    public void test1() {
        List<String> list = Arrays.asList("string","trek");
        list.stream().forEach(System.out :: println);
    }
    
    //2
    //Stream接口之中拥有了of方法,可以创建一个含有指定数量元素的stream
    
    @Test
    public void test2() {
        Stream<String> stream = Stream.of(new String[]{"string","trek"});
        stream.forEach(System.out :: println);
    }
    
    /**
     * 3 .我们使用的数组其实也是一种Stream
     *  ,因此在我们的数组工具类之中也提供了相应的方法创建Stream
     */
    @Test
    public void test3() {
        String[] arr = new String[] {"aaaa","bbbb"};
        Stream<String> stream = Arrays.stream(arr);
        stream.forEach(System.out::println);
    }
    
    /**
     * 从文件之中获取Stream
     * 这个其实我们可能会使用的比较多
     * @throws IOException 
     */
    @Test
    public void test4() throws IOException {
        Path path = Paths.get("E:\trek\trek.js");
        try(Stream<String> stream = Files.lines(path)){
            stream.forEach(System.out::println);
        }
    }
    
    
    /**
     * 通过无限流获取Stream
     * 现在展示的就是iterate()方法获取无限流
     */
    @Test
    public void test5() {
        Stream<Integer> stream = Stream.iterate(1, n -> n+1).limit(20);
        stream.forEach(System.out::println);
    }
    
    /**
     * 通过generate()方法获取无限流
     */
    @Test
    public void test6() {
        Stream<Double> stream = Stream.generate(Math::random).limit(20);
        stream.forEach(System.out::println);
    }
原文地址:https://www.cnblogs.com/trekxu/p/9388020.html