Compound
CompoundAggregate 实现了“复合聚合”:即多个聚合的组合。(请注意,这可以在一次遍历中计算多个聚合。)
类定义
public static class CompoundAggregate implements Aggregate
{
public void initialize(Object val)
{
for (Aggregate agg : aggregates)
{
agg.initialize(val);
}
}
public void accumulate(Object val)
{
for (Aggregate agg : aggregates)
{
agg.accumulate(val);
}
}
public Object result()
{
Object[] arr = new Object[aggregates.length];
for (int i = 0; i < aggregates.length; i++)
{
arr[i] = aggregates[i].result();
}
return arr;
}
public void merge(Aggregate other)
{
Aggregate[] otherAggregates = ((CompoundAggregate)other).aggregates;
for (int i = 0; i < otherAggregates.length; i++)
{
aggregates[i].merge(otherAggregates[i]);
}
}
public CompoundAggregate(Aggregate... aggs)
{
aggregates = aggs;
}
Aggregate[] aggregates;
}