Stream -> List がちょっと複雑だったからメモ
単純に変換可能だった。
Stream#collect
Stream.of(1,2,3,4,5,6,7,8,9,10,11).collect(Collectors.toList());
IntStream に変えてみたら面倒になった。
IntStream#collect
IntStream.of(1,2,3,4,5,6,7,8,9,10,11).collect(ArrayList<Integer>::new,(a,b)->{a.add(b);},null);
長いと思ったので Stream<E> に変換してみた
Stream#collect
IntStream.of(1,2,3,4,5,6,7,8,9,10,11).mapToObj(Integer::valueOf).collect(Collectors.toList());
Utilクラスを作成してみる
ListUtil
class ListUtil {
public static <T> void add(List<T> list, T value) {
list.add(value);
}
public static <T> List<T> gen() {
return new ArrayList<>();
}
}
IntStream#collect
IntStream.of(1,2,3,4,5,6,7,8,9,10,11).collect(ListUtil::gen,ListUtil::add,null);
よくみたら boxed てものがあった。
Stream#collect
IntStream.of(1,2,3,4,5,6,7,8,9,10,11).boxed().collect(Collectors.toList());
この例は通し番号だからこういうことも
Stream#collect
IntStream.range(1,11).boxed().collect(Collectors.toList());