large-file-reading-challenge/src/main/java/eu/ztsh/lfr/model/YearDataAccumulator.java
2024-07-18 02:51:32 +02:00

25 lines
695 B
Java

package eu.ztsh.lfr.model;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.DoubleAdder;
public class YearDataAccumulator {
private final DoubleAdder sum = new DoubleAdder();
private final AtomicInteger counter = new AtomicInteger();
public void add(double value) {
synchronized (this) {
sum.add(value);
counter.incrementAndGet();
}
}
public BigDecimal getAverage() {
return BigDecimal.valueOf(sum.sum()).setScale(2, RoundingMode.HALF_UP)
.divide(BigDecimal.valueOf(counter.get()), RoundingMode.HALF_UP);
}
}