All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.mydotey.quantile.gk.GkQuantileEstimator Maven / Gradle / Ivy

The newest version!
package org.mydotey.quantile.gk;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;

import org.mydotey.quantile.QuantileEstimator;

/**
 * @author koqizhao
 *
 * Apr 2, 2018
 */
public class GkQuantileEstimator implements QuantileEstimator {

    private GkQuantileEstimatorConfig _config;
    private QuantileEstimationGK _quantileEstimationGK;

    public GkQuantileEstimator(GkQuantileEstimatorConfig config) {
        Objects.requireNonNull(config, "config is null");

        _config = config;
        _quantileEstimationGK = new QuantileEstimationGK<>(_config.getComparator(), _config.getError(),
                _config.getCompactThreshold());
    }

    @Override
    public void add(T value) {
        _quantileEstimationGK.insert(value);
    }

    @Override
    public Map get(List quantiles) {
        HashMap results = null;
        for (Double quantile : quantiles) {
            T result = _quantileEstimationGK.query(quantile);
            if (_quantileEstimationGK.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