
org.mydotey.quantile.ckms.CkmsQuantileEstimatorConfig Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of quantile-estimator Show documentation
Show all versions of quantile-estimator Show documentation
quantile algorithms' implementations for stream data
The newest version!
package org.mydotey.quantile.ckms;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
/**
* @author koqizhao
*
* Apr 1, 2018
*/
public class CkmsQuantileEstimatorConfig {
private Comparator _comparator;
private List _quantileConfigs;
protected CkmsQuantileEstimatorConfig(Comparator comparator, List quantileConfigs) {
_comparator = comparator;
_quantileConfigs = Collections.unmodifiableList(quantileConfigs);
}
public Comparator getComparator() {
return _comparator;
}
public List getQuantileConfigs() {
return _quantileConfigs;
}
public static class QuantileConfig {
private double quantile;
private double error;
protected QuantileConfig(double quantile, double error) {
this.quantile = quantile;
this.error = error;
}
public double getQuantile() {
return quantile;
}
public double getError() {
return error;
}
}
public static Builder newBuilder() {
return new Builder<>();
}
public static class Builder {
private Comparator _comparator;
private List _quantileConfigs;
protected Builder() {
_quantileConfigs = new ArrayList<>();
}
public Builder setComparator(Comparator comparator) {
_comparator = comparator;
return this;
}
public Builder addQuantileConfig(double quantile, double error) {
String format = "%s %f invalid: expected number between 0.0 and 1.0.";
if (quantile < 0.0 || quantile > 1.0)
throw new IllegalArgumentException(String.format(format, "quantile", quantile));
if (error < 0.0 || error > 1.0)
throw new IllegalArgumentException(String.format(format, "error", error));
_quantileConfigs.add(new QuantileConfig(quantile, error));
return this;
}
public CkmsQuantileEstimatorConfig build() {
Objects.requireNonNull(_comparator, "comparator is not set");
if (_quantileConfigs.isEmpty())
throw new IllegalArgumentException("quantileConfig is not added");
return new CkmsQuantileEstimatorConfig<>(_comparator, new ArrayList<>(_quantileConfigs));
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy