package com.github.pfichtner.jrunalyser.base.util;
import java.util.Iterator;
public class MovingAverageIterator implements Iterator<Double> {
private final Iterator<? extends Number> delegate;
private final MovingAverage movingAverage;
public MovingAverageIterator(Iterator<? extends Number> delegate, int period) {
this.delegate = delegate;
this.movingAverage = new MovingAverage(period);
}
@Override
public boolean hasNext() {
return this.delegate.hasNext();
}
@Override
public Double next() {
Number next = this.delegate.next();
return Double.valueOf(next == null ? this.movingAverage.getValue()
: this.movingAverage.add(next.doubleValue()));
}
@Override
public void remove() {
this.delegate.remove();
}
}