I agree with @Gangnus that a static "wrapper" class makes sense if individual class methods will always be used in isolation, and this is often going to be a good answer.
However, there might be some value in a non-static class, with non-static methods, if you have related calculations likely to be used together. For example, construct a ListStatsUtil object with List<BigDecimal> passed into constructor, it might be convenient to access getStandardDeviation, getVariance, and getAverage in sequence without passing back in the object. This may be more elegant, but might also perform better, especially if computationally expensive operations are involved that can be optimized across operations by sharing private state within the object.
public ListStatsUtil {
private final List<BigDecimal> numbers;
public ListStatsUtil(List<BigDecimal> numbers) {
this.numbers = numbers;
}
public BigDecimal getAverage() {
// return average of this.numbers
}
public BigDecimal getStandardDeviation() {
// return std dev of this.numbers
}
public BigDecimal getVariance() {
// return variance of this.numbers
}
public BigDecimal getMax() {
// return max of this.numbers
}
public BigDecimal getMin() {
// return min of this.numbers
}
}