当前位置 > it书童 > java > 正文

流的构建方式

java it书童 2021-01-14 16:16:06 0赞 0踩 182阅读 0评论
  • 由值创建流

  • 由数组创建流

  • 由文件生成流

  • 由函数生成流(无限流)

package stream;

import org.junit.Test;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.stream.IntStream;
import java.util.stream.Stream;

public class StreamConstructor {

    /**
     * 由数值直接构建流
     */
    @Test
    public void streamFromValue() {
        Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
        stream.forEach(System.out::println);
    }

    /**
     * 通过数组构建流
     */
    @Test
    public void streamFromArray() {
        int[] numbers = {1, 2, 3, 4, 5};
        IntStream stream = Arrays.stream(numbers);
        stream.forEach(System.out::println);
    }


    /**
     * 通过文件构建流
     * @throws IOException
     */
    @Test
    public void streamFromFile() throws IOException {
        Stream<String> stream = Files.lines(Paths.get("/Users/senlongzhong/code/demo/javaDemo/src/main/java/stream/StreamConstructor.java"));
        stream.forEach(System.out::println);
    }

    /**
     * 通过函数构建流
     */
    @Test
    public void streamForFunction() {
        // 第一种方式
        // 生成由无限个偶数生成的流
        Stream<Integer> stream1 = Stream.iterate(0, n -> n + 2);

        // 第二种方式
        Stream<Double> stream2 = Stream.generate(Math::random);

        // 生成的是无限流,需要用 limit 限制个数
        stream1.limit(3).forEach(System.out::println);
        stream2.limit(3).forEach(System.out::println);
    }

}
关于我
一个文科出身的程序员,追求做个有趣的人,传播有价值的知识,微信公众号主要分享读书思考心得,不会有代码类文章,非程序员的同学请放心订阅
转载须注明出处:https://www.itshutong.com/articles/1025