やっと理解っ!Java8 の Stream.itrate … のはずなんだが…

 
なんか、わかったようでいて、わかってなかった。

コレクションを使う場合は、stream() で、Stream に変換して、
あとは何をするのか、順番に宣言すればいいんだけど…

Stream.iterate() ってなんだろう~

iterate の第一引数はSEED値となる値(あるいは、インスタンスでもok)、
第二引数は現在の値から次の値を作成するメソッド。

Stream.iterate() で、SEED値から無限連続データの Stream を作成することができる。
コレクションだと、有限だけど…

ただし、ここに続く宣言で、limit() や findFirst() などの制約を記述しておけば、
連続データが不要な量作成される事はない。

ここまでは、わかった~

Java だとスタック破る可能性を無視できないから、再帰の場合は対策が必要で、
従来の記述だと、対策がとれなかったけど、
関数を返して、返された側で再帰をすれば、スタックを消費しないですむもんね。


でも、これって、Effective Java Ver.2 で似た方法を読んだ気がする…
あの時は、関数を返せないから、インスタンスで返して、メソッドを実行してたよね。

あれ?ちがった?

う…やっぱり、まだ道半ば…かも?orz