
org.mydotey.quantile.ckms.CkmsQuantileEstimator 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.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import org.mydotey.quantile.QuantileEstimator;
import org.mydotey.quantile.ckms.CKMSQuantiles.Quantile;
/**
* @author koqizhao
*
* Apr 2, 2018
*/
public class CkmsQuantileEstimator implements QuantileEstimator {
private CkmsQuantileEstimatorConfig _config;
private CKMSQuantiles _ckmsQuantiles;
public CkmsQuantileEstimator(CkmsQuantileEstimatorConfig config) {
Objects.requireNonNull(config, "config is null");
_config = config;
List quantiles = new ArrayList<>();
_config.getQuantileConfigs().forEach(qc -> {
Quantile quantile = new Quantile(qc.getQuantile(), qc.getError());
quantiles.add(quantile);
});
_ckmsQuantiles = new CKMSQuantiles<>(quantiles, _config.getComparator());
}
@Override
public void add(T value) {
_ckmsQuantiles.insert(value);
}
@Override
public Map get(List quantiles) {
HashMap results = null;
for (Double quantile : quantiles) {
T result = _ckmsQuantiles.get(quantile);
if (_ckmsQuantiles.isEmpty())
return null;
if (results == null)
results = new HashMap<>();
results.put(quantile, result);
}
if (results == null)
results = new HashMap<>();
return results;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy