IntStream.iterate的简单使用

IntStream.iterate的简单使用

注意:IntStream是jdk1.8新增的一个接口,iterate是他的一个静态实现方法(注意jdk1.8开始,接口中的default方法或者static方法可以定义方法体,而不是只能定义抽象方法了,上面的IntStream接口就是。)

看他的方法介绍:

Returns an infinite sequential ordered IntStream produced by iterative application of a function f to an initial element seed, producing a Stream consisting of seed, f(seed), f(f(seed)), etc.

大意:通过迭代函数,生成一个有序无限的Int数据流。(由于是无限流,一般都是配合limit来使用)。

我们来看一个使用案例:

IntStream.iterate(2, n -> n * 3).limit(10).forEach(System.out::println);

// 返回
2
6
18
54
162
486
1458
4374
13122
39366

这个例子是首项为2,等比数列公比为3的一个等比数列,取前10项打印输出。

看下这个方法的参数iterate(int seed, IntUnaryOperator f),seed也就是上面案例中的第一个参数2,seed表示种子,你可以理解为初始值或者首项值(seed的命名方式在jdk中比较常见,比如Random类就定一个类变量seed,来帮助生成随机数)。IntUnaryOperatorUnary表示一元,这个接口表示一元的int参数的stream表达式类似于x -> ax+b这种的表达式。

你可能感兴趣的:(java)