@Override public void add(final E element) { final Integer lastQueryTick = lastQueryTicks_.get(element); if (lastQueryTick != null) { nRepeatedQueriesToBalance_--; final int queryAge = tick_ - lastQueryTick; final double estimation = quantileEstimator_.next(queryAge); if (nRepeatedQueriesToBalance_ == 0) { nRepeatedQueriesToBalance_ = balanceAfterNRepeatedQueries_; // Balance capacity setCapacity((int) Math.min(Math.max(0.0, estimation), Integer.MAX_VALUE)); } } lastQueryTicks_.put(element, tick_); tick_++; // Actual add. super.add(element); }
@Override public void add(final E element) { final Integer lastQueryTick = lastQueryTicks_.get(element); if (lastQueryTick != null) { nRepeatedQueriesToBalance_--; final int queryAge = tick_ - lastQueryTick; final double estimation = quantileEstimator_.next(queryAge); if (nRepeatedQueriesToBalance_ == 0) { nRepeatedQueriesToBalance_ = balanceAfterNRepeatedQueries_; // Balance capacity setCapacity((int) Math.min(Math.max(0.0, estimation), Integer.MAX_VALUE)); } } lastQueryTicks_.put(element, tick_); tick_++; // Actual add. super.add(element); }
@Override public void add(final E element) { final Integer lastQueryTick = lastQueryTicks_.get(element); if (lastQueryTick != null) { nRepeatedQueriesToBalance_--; final int queryAge = tick_ - lastQueryTick; final double estimation = quantileEstimator_.next(queryAge); if (nRepeatedQueriesToBalance_ == 0) { nRepeatedQueriesToBalance_ = balanceAfterNRepeatedQueries_; // Balance capacity setCapacity((int) Math.min(Math.max(0.0, estimation), Integer.MAX_VALUE)); } } lastQueryTicks_.put(element, tick_); tick_++; // Actual add. super.add(element); }
public QuantileEstimator(final double q, final double initialValue) { this(q); next(initialValue); }
public QuantileEstimator(final double q, final double initialValue) { this(q); next(initialValue); }
public QuantileEstimator(final double q, final double initialValue) { this(q); next(initialValue); }