MaxAggregate implements the maximum aggregation, and MinAggregate implements the minimum aggregation.
public static class MaxAggregate implements Aggregate<Comparable> { public void initialize(Comparable val) { max = val; } public void accumulate(Comparable val) { if (val.compareTo(max) > 0) { max = val; } } public Object result() { return max; } public void merge(Aggregate<Comparable> other) { accumulate((Comparable)other.result()); } Comparable max; }
The MinAggregate implementation is exactly identical to that of MaxAggregate below, except that the variable name is min
instead of max
(highlighted below) and the compareTo()
expression is
if (val.compareTo(min) < 0)
instead of
if (val.compareTo(max) > 0)