java.util.stream.Collector#of の簡単なサンプル
Collectors.toSet() で済む話ではあるのだが、
static <T,A,R> Collector<T,A,R> of(Supplier<A> supplier,
BiConsumer<A,T> accumulator,
BinaryOperator<A> combiner,
Function<A,R> finisher,
Collector.Characteristics... characteristics)
をしっかりと理解するのには、そこそこ良いサンプル
stream の集計として HashSet に格納して全て同一(equalsメソッド)要素であるかをチェック
public static <T> Collector<T, Set<T>, Boolean> isSingle(){ return Collector.of(HashSet::new, Set::add, (a1, a2)->{ a1.addAll(a2); return a1; }, a->a.size()==1 ); }
stream の集計として HashSet に格納してそのサイズを求める。
static <T> Collector<T, Set<T>, Integer> hashsetsize(){ return Collector.of(HashSet::new, Set::add, (a1, a2)->{ a1.addAll(a2); return a1; }, a->a.size() ); }
いずれも、Collectors.toSet()の結果で事足りるのだが、Stream#collect の戻り値として欲しい場合は
良いかもしれない。