やっと理解っ!Java8 の Stream.itrate … のはずなんだが…
なんか、わかったようでいて、わかってなかった。
コレクションを使う場合は、stream() で、Stream に変換して、
あとは何をするのか、順番に宣言すればいいんだけど…
Stream.iterate() ってなんだろう~
iterate の第一引数はSEED値となる値(あるいは、インスタンスでもok)、
第二引数は現在の値から次の値を作成するメソッド。
Stream.iterate() で、SEED値から無限連続データの Stream を作成することができる。
コレクションだと、有限だけど…
ただし、ここに続く宣言で、limit() や findFirst() などの制約を記述しておけば、
連続データが不要な量作成される事はない。
ここまでは、わかった~
Java だとスタック破る可能性を無視できないから、再帰の場合は対策が必要で、
従来の記述だと、対策がとれなかったけど、
関数を返して、返された側で再帰をすれば、スタックを消費しないですむもんね。
でも、これって、Effective Java Ver.2 で似た方法を読んだ気がする…
あの時は、関数を返せないから、インスタンスで返して、メソッドを実行してたよね。
あれ?ちがった?
う…やっぱり、まだ道半ば…かも?orz