Quantile implements DoubleConsumer { public Quantile(final double quantile) { _quantile = quantile; init(quantile); } Quantile(final double quantile); void reset(); double quantile(); double value(); long count(); @Override void accept(final double value); Quantile combine(final Quantile other); boolean sameState(final Quantile other); @Override String toString(); static Collector<T, ?, Quantile> toQuantile(
		final double quantile,
		final ToDoubleFunction<? super T> mapper
	); static Collector<T, ?, Quantile> toMedian(
		final ToDoubleFunction<? super T> mapper
	);  }
@Test(dataProvider = "quantiles") public void quantile(final Double q) { final int N = 2_000_000; final Quantile quantile = new Quantile(q); new Random(1234).doubles().limit(N).forEach(quantile); Assert.assertEquals(quantile.count(), N); Assert.assertEquals(quantile.value(), q, 1.0/sqrt(N)); }