473 public final Optional<P_OUT> findAny() {
474 return evaluate(FindOps.makeRef(false));
475 }
476
477 @Override
478 public final P_OUT reduce(final P_OUT identity, final BinaryOperator<P_OUT> accumulator) {
479 return evaluate(ReduceOps.makeRef(identity, accumulator, accumulator));
480 }
481
482 @Override
483 public final Optional<P_OUT> reduce(BinaryOperator<P_OUT> accumulator) {
484 return evaluate(ReduceOps.makeRef(accumulator));
485 }
486
487 @Override
488 public final <R> R reduce(R identity, BiFunction<R, ? super P_OUT, R> accumulator, BinaryOperator<R> combiner) {
489 return evaluate(ReduceOps.makeRef(identity, accumulator, combiner));
490 }
491
492 @Override
493 public final <R> R collect(Collector<? super P_OUT, R> collector) {
494 if (isParallel()
495 && (collector.characteristics().contains(Collector.Characteristics.CONCURRENT))
496 && (!isOrdered() || collector.characteristics().contains(Collector.Characteristics.UNORDERED))) {
497 R container = collector.resultSupplier().get();
498 BiFunction<R, ? super P_OUT, R> accumulator = collector.accumulator();
499 forEach(u -> accumulator.apply(container, u));
500 return container;
501 }
502 return evaluate(ReduceOps.makeRef(collector));
503 }
504
505 @Override
506 public final <R> R collect(Supplier<R> resultFactory,
507 BiConsumer<R, ? super P_OUT> accumulator,
508 BiConsumer<R, R> combiner) {
509 return evaluate(ReduceOps.makeRef(resultFactory, accumulator, combiner));
510 }
511
512 @Override
513 public final Optional<P_OUT> max(Comparator<? super P_OUT> comparator) {
514 return reduce(BinaryOperator.maxBy(comparator));
515 }
516
517 @Override
518 public final Optional<P_OUT> min(Comparator<? super P_OUT> comparator) {
519 return reduce(BinaryOperator.minBy(comparator));
520
521 }
522
|
473 public final Optional<P_OUT> findAny() {
474 return evaluate(FindOps.makeRef(false));
475 }
476
477 @Override
478 public final P_OUT reduce(final P_OUT identity, final BinaryOperator<P_OUT> accumulator) {
479 return evaluate(ReduceOps.makeRef(identity, accumulator, accumulator));
480 }
481
482 @Override
483 public final Optional<P_OUT> reduce(BinaryOperator<P_OUT> accumulator) {
484 return evaluate(ReduceOps.makeRef(accumulator));
485 }
486
487 @Override
488 public final <R> R reduce(R identity, BiFunction<R, ? super P_OUT, R> accumulator, BinaryOperator<R> combiner) {
489 return evaluate(ReduceOps.makeRef(identity, accumulator, combiner));
490 }
491
492 @Override
493 public final <R, A> R collect(Collector<? super P_OUT, A, R> collector) {
494 A container;
495 if (isParallel()
496 && (collector.characteristics().contains(Collector.Characteristics.CONCURRENT))
497 && (!isOrdered() || collector.characteristics().contains(Collector.Characteristics.UNORDERED))) {
498 container = collector.supplier().get();
499 BiConsumer<A, ? super P_OUT> accumulator = collector.accumulator();
500 forEach(u -> accumulator.accept(container, u));
501 }
502 else {
503 container = evaluate(ReduceOps.makeRef(collector));
504 }
505 return collector.characteristics().contains(Collector.Characteristics.IDENTITY_FINISH)
506 ? (R) container
507 : collector.finisher().apply(container);
508 }
509
510 @Override
511 public final <R> R collect(Supplier<R> resultFactory,
512 BiConsumer<R, ? super P_OUT> accumulator,
513 BiConsumer<R, R> combiner) {
514 return evaluate(ReduceOps.makeRef(resultFactory, accumulator, combiner));
515 }
516
517 @Override
518 public final Optional<P_OUT> max(Comparator<? super P_OUT> comparator) {
519 return reduce(BinaryOperator.maxBy(comparator));
520 }
521
522 @Override
523 public final Optional<P_OUT> min(Comparator<? super P_OUT> comparator) {
524 return reduce(BinaryOperator.minBy(comparator));
525
526 }
527
|