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這種的表達式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章