美文网首页
Java8 Stream 之无限流

Java8 Stream 之无限流

作者: Tinyspot | 来源:发表于2023-11-11 15:18 被阅读0次

1. 无限流

  • 无限流——这个流没有结尾,因为值是按需计算的,可以永远计算下去
public interface Stream<T> extends BaseStream<T, Stream<T>> {
    public static<T> Stream<T> iterate(final T seed, final UnaryOperator<T> f) {}

    public static<T> Stream<T> generate(Supplier<T> s) {}
}

2. 迭代 Stream.iterate(T seed, UnaryOperator)

  • 可用 limit() 限制流的大小

2.1 生成数字序列

@Test
public void iterateDemo() {
    Stream.iterate(1, n -> n + 1)
            .limit(100)
            .forEach(System.out::println);

    // 生成 1, 2, 3 ... 100
    List<Integer> numbers = Stream.iterate(1, n -> n + 1)
            .limit(100)
            .collect(Collectors.toList());

    // 1~100 求和
    Integer sum = Stream.iterate(1, n -> n + 1)
            .limit(100)
            .reduce(0, Integer::sum);
    System.out.println(sum);
}

2.2 生成等差数列

@Test
public void evenNumber() {
    // 生成偶数序列
    Stream.iterate(0, n -> n + 2)
            .limit(10)
            .forEach(System.out::println);
}

3. 生成 Stream.generate(Supplier)

  • generate(Supplier) 接受 Supplier 类型的 Lambda 提供新的值
@Test
public void generateDemo() {
    // Math.random() 生成的是区间在[0,1)的随机小数
    Stream.generate(() -> Math.random())
            .limit(5)
            .forEach(System.out::println);

    // 生成 [1,10] 的整数
    Stream.generate(() -> (int) (Math.random() * 10) + 1)
            .limit(5)
            .forEach(System.out::println);

    // nextInt(10)表示区间[0,10)
    Stream.generate(() -> new Random().nextInt(10) + 1)
            .limit(5)
            .forEach(System.out::println);
}

相关文章

  • Java8之Stream流(六)收集

    Java8之Stream流(一)基础体验 Java8之Stream流(二)关键知识点 Java8之Stream...

  • Java8 Stream 无限流

    背景 今天遇到一个小需求,现在有一个列表,消费完了希望又从头开始消费,直到别的信号过来,停止这个过程所以需要生成一...

  • Java 8 Stream--开发手册

    什么是Java8 Stream,为什么需要Stream? Stream是Java8一大亮点,它与 java.io ...

  • Java8 学习笔记

    @(in action系列)[java8, lambda, stream] Java8 学习 java8 能高效的...

  • Stream流

    Stream流 java8新特性 Stream定义 A sequence of elements supporti...

  • java8 stream lambda

    记录Java8的stream操作,供自己复习。 创建Stream Employee类 创建stream方法 for...

  • JAVA8中Stream学习

    JAVA8中Stream学习 最近看了下Stream的api: Stream用户操作Collection族的数据,...

  • Java8 Stream 流的重用

    Java8 Stream 已经被操作或关闭 引言 在 java8 中,Stream 不能被重用,一旦它被使用或使用...

  • Java8 Stream 使用及其详解

    一、什么是Stream 二、Java7和Java8 聚合操作的区别。 三、Stream 总览 四、Stream 的...

  • Java 8 Stream 教程

    本文采用实例驱动的方式,对JAVA8的stream API进行一个深入的介绍。虽然JAVA8中的stream AP...

网友评论

      本文标题:Java8 Stream 之无限流

      本文链接:https://www.haomeiwen.com/subject/naokwdtx.html