From 8923edffdb36b790014ff47301e53f7ede93ea0d Mon Sep 17 00:00:00 2001 From: "Benjamin J. Culkin" Date: Wed, 11 Oct 2017 22:49:16 -0300 Subject: Cleanup more --- .../bjc/utils/funcutils/CompoundCollector.java | 33 ++++++++++++++++------ 1 file changed, 25 insertions(+), 8 deletions(-) (limited to 'base/src/main/java/bjc/utils/funcutils/CompoundCollector.java') diff --git a/base/src/main/java/bjc/utils/funcutils/CompoundCollector.java b/base/src/main/java/bjc/utils/funcutils/CompoundCollector.java index 35695bc..928c3f4 100644 --- a/base/src/main/java/bjc/utils/funcutils/CompoundCollector.java +++ b/base/src/main/java/bjc/utils/funcutils/CompoundCollector.java @@ -12,26 +12,43 @@ import bjc.utils.data.IPair; import bjc.utils.data.Identity; import bjc.utils.data.Pair; +/** + * Implementation of a collecter that uses two collectors. + * + * @author Ben Culkin + */ final class CompoundCollector implements Collector>, IPair> { - + /* Our characteristics. */ private final Set characteristicSet; - private final Collector first; - private final Collector second; - + /* The first collector. */ + private final Collector first; + /* The second collector. */ + private final Collector second; + + /** + * Create a collector that uses two collectors. + * + * @param first + * The first collector. + * + * @param second + * The second collector. + */ public CompoundCollector(final Collector first, final Collector second) { this.first = first; this.second = second; + /* Accumulate characteristics. */ characteristicSet = first.characteristics(); characteristicSet.addAll(second.characteristics()); } @Override public BiConsumer>, InitialType> accumulator() { - final BiConsumer firstAccumulator = first.accumulator(); + final BiConsumer firstAccumulator = first.accumulator(); final BiConsumer secondAccumulator = second.accumulator(); return (state, value) -> { @@ -51,7 +68,7 @@ final class CompoundCollector>> combiner() { - final BinaryOperator firstCombiner = first.combiner(); + final BinaryOperator firstCombiner = first.combiner(); final BinaryOperator secondCombiner = second.combiner(); return (leftState, rightState) -> { @@ -68,7 +85,7 @@ final class CompoundCollector { return state.unwrap(pair -> { return pair.bind((left, right) -> { - final FinalType1 finalLeft = first.finisher().apply(left); + final FinalType1 finalLeft = first.finisher().apply(left); final FinalType2 finalRight = second.finisher().apply(right); return new Pair<>(finalLeft, finalRight); @@ -80,7 +97,7 @@ final class CompoundCollector>> supplier() { return () -> { - final AuxType1 initialLeft = first.supplier().get(); + final AuxType1 initialLeft = first.supplier().get(); final AuxType2 initialRight = second.supplier().get(); return new Identity<>(new Pair<>(initialLeft, initialRight)); -- cgit v1.2.3