第2章 ストリーム API の使い方 : 問題 9 : reduce メソッドのバリエーション
問題 9
Stream<ArrayList<T>>
内の全ての要素を、ひとつのArrayList<T>
にまとめよ
3つの Overload されたreduce
を用いよ
解答
List<ArrayList<String>> listOfList
が与えられているとする。
■T reduce(T, BinaryOperator<T>)
ArrayList<String> list = listOfList.stream() .reduce( new ArrayList<String>(), (r, e) -> { r.addAll(e); return r; } ); list.forEach(System.out::println);
■Optional<T> reduce(BinaryOperator<T>)
ArrayList<String> list = listOfList.stream() .reduce((r, e) -> { r.addAll(e); return r; }) .orElse(new ArrayList<String>()); list.forEach(System.out::println);
■<U> U reduce(U, BiFunction<U,? super T,U>, BinaryOperator<U>)
ArrayList<String> list = listOfList.stream() .reduce( new ArrayList<String>(), (r, e) -> { r.addAll(e); return r; }, (r, s) -> { r.addAll(s); return r; } ); list.forEach(System.out::println);