14 Ağustos 2018 Salı

Stream.collect metodu - Supplier - Kendi Collector Nesnemiz

Giriş
İmzası şöyle.
<R, A> R collect(Collector<? super T, A, R> collector);
Örnek
Hazır collector kullanmak istersek şöyle yaparız.
yourList.stream().collect(Collectors.joining(","))
Örnek
Elimizde bir Collector olsun.
class PackCollector<T> implements Collector<T, List<List<T>>, List<List<T>>> {

  @Override
  public Supplier<List<List<T>>> supplier() {
    return () -> {
      ...
    };
  }

  @Override
  public BiConsumer<List<List<T>>, T> accumulator() {
    return (list, s) -> {
      ...
    };
  }

  @Override
  public BinaryOperator<List<List<T>>> combiner() {
    return (left, right) -> {
      ...
    };
  }

  @Override
  public Set<Characteristics> characteristics() {
    return EnumSet.of(Characteristics.IDENTITY_FINISH);
  }

  @Override
  public Function<List<List<T>>, List<List<T>>> finisher() {
    return Function.identity();
  }

}
Şöyle yaparız.
List<List<String>> result = items.stream().parallel().collect(new PackCollector<>());
System.out.println(result);

Hiç yorum yok:

Yorum Gönder