如何在Java中计算百分位数?

如何在Java中计算百分位数?,java,percentile,Java,Percentile,我试图从LinkedHashMap中填充的数据集计算百分位 Key Value 1 1 2 1 3 1 4 6 5 10 5 19 7 19 8 20 如何获取每个值的百分位数? 我使用的代码并没有给出正确的百分位数 float i = test.s

我试图从LinkedHashMap中填充的数据集计算百分位

Key             Value
1               1
2               1
3               1
4               6
5               10
5               19
7               19
8               20
如何获取每个值的百分位数? 我使用的代码并没有给出正确的百分位数

float i = test.size();
float k = test.size();

if (test.size() > 1) {
    float  n = (i-1)*100/i;

    for (int j = 0; j <=i ; ) {
        if (i == 1) {
            System.exit(0);
        }
        float  a = (i-1)*100/k;
        System.out.println("Percentile of lastvalue "+a);

        i--;
        System.out.println("Size of i "+i);
    }
} else {
    System.out.println("Bye");
}
Percentiile将从列表中的最高值开始计数首先,test.size()返回LinkedHashMap中的条目数,这可能不是您想要的。如果我理解正确,您需要计算所有值之和的每个值的相对大小(百分位)。这就是我的代码片段所完成的

另外,您已经编写了两次密钥5,我相信您不是有意这样做的(LinkedHashMaps或哈希表通常不支持重复密钥)。因此,我将最后一个5改为6

import java.util.LinkedHashMap;
导入java.util.List;
导入java.util.ArrayList;
类钙质
{
公共静态void calcPercentiles(LinkedHashMap hashMap){
int size=hashMap.size();
List value_List=newarraylist(hashMap.values());
整数和=0;
对于(int i=0;i
输出:

1.2987013
1.2987013
1.2987013
7.7922077
12.987013
24.675325
24.675325
25.974026

您也可以使用番石榴的分位数来计算分位数\百分位数数据-

是否有用于计算百分位数的
值的外部范围?或者,
1-20
是范围吗?我在这里显示的值即将到来,可能需要或更多时间来获取每个值的百分位数。现在,我想计算百分位数显示预期输出,因为它与输入观测值完全对应。
1.2987013
1.2987013
1.2987013
7.7922077
12.987013
24.675325
24.675325
25.974026