Stream から 配列生成

Stream<T> の toArray(T::new);

toArray の引数が IntFunction<A> なのであるからといって、

.toArray(v->new T[v]);

と書く人は少ない。

IntStream toArray() が、int[] を生成するのだが、

int[] intary = IntStream.rangeClosed(1, 5).toArray();

Integer の配列は、IntStream のまま、toArray で作成できるわけがなく、
一旦、IntStream から、Stream<Integer> にしないと、toArray で変換できない。

例)

Integer[] integerAry = IntStream.rangeClosed(1, 5).mapToObj(Integer::valueOf).toArray(Integer[]::new);

mapToObj じゃなくて、IntStream なんだから、boxed

Stream<Integer> integerStream = IntStream.rangeClosed(1, 5).boxed();
Integer[] integerAry = integerStream.toArray(Integer[]::new);

つまり、

Integer[] integerAry = IntStream.rangeClosed(1, 5).boxed().toArray(Integer[]::new);

Stream ではなく、省略可能引数のメソッドの呼び出しも、配列に変換するメソッドにすることになる視点も
面白い。

public  T[]  setandgetFunction(T...t) {
     // TODO
     return t;
}