< prev index next >

src/java.base/share/classes/java/util/stream/ReduceOps.java

Print this page
rev 53968 : enable Collector pre-sizing

*** 152,169 **** * @param collector a {@code Collector} defining the reduction * @return a {@code ReduceOp} implementing the reduction */ public static <T, I> TerminalOp<T, I> makeRef(Collector<? super T, I, ?> collector) { ! Supplier<I> supplier = Objects.requireNonNull(collector).supplier(); ! BiConsumer<I, ? super T> accumulator = collector.accumulator(); BinaryOperator<I> combiner = collector.combiner(); class ReducingSink extends Box<I> implements AccumulatingSink<T, I, ReducingSink> { @Override public void begin(long size) { ! state = supplier.get(); } @Override public void accept(T t) { accumulator.accept(state, t); --- 152,171 ---- * @param collector a {@code Collector} defining the reduction * @return a {@code ReduceOp} implementing the reduction */ public static <T, I> TerminalOp<T, I> makeRef(Collector<? super T, I, ?> collector) { ! BiConsumer<I, ? super T> accumulator = Objects.requireNonNull(collector).accumulator(); BinaryOperator<I> combiner = collector.combiner(); class ReducingSink extends Box<I> implements AccumulatingSink<T, I, ReducingSink> { @Override public void begin(long size) { ! if (size == -1) ! state = collector.supplier().get(); ! else ! state = collector.sizedSupplier().apply((int) size); } @Override public void accept(T t) { accumulator.accept(state, t);
< prev index next >