Java tutorial
//package com.java2s; /* * Copyright (c) 2005-2011 KOM - Multimedia Communications Lab * * This file is part of PeerfactSim.KOM. * * PeerfactSim.KOM is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * PeerfactSim.KOM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PeerfactSim.KOM. If not, see <http://www.gnu.org/licenses/>. * */ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; public class Main { public static double getQuantile(Collection<Double> l, double alpha) { List<Double> sorted = new ArrayList<Double>(l); Collections.sort(sorted); int size = sorted.size(); if (size == 0) return Double.NaN; double kDouble = (size - 1) * alpha; int k = (int) Math.floor(kDouble); double g = kDouble - k; double lowerValue = sorted.get(k); if (sorted.size() <= k + 1) return lowerValue; double upperValue = sorted.get(k + 1); return (1 - g) * lowerValue + g * upperValue; } }