我正在尝试95% percentile
从 Java 中的数据集进行计算。我的数据集会有这样的东西-
我将拥有一个ConcurrentHashMap
像这样的键值对-
Key = 30
Value = 10
这意味着 10 个电话在 30 毫秒内返回
另一个例子-
Key = 20
Value = 5
这意味着 5 个呼叫在 20 毫秒内返回
所以从上面的地图中,我试图用 Java 计算 95% Percentile。
谁能从我上面的地图中提供任何示例如何在 Java 中做到这一点?谢谢您的帮助
更新代码:-
下面是我得到的代码,它将计算地图中的第 95 个百分位数-
/**
* A simple method to log 95th percentile information
*/
private static void logPercentileInfo() {
double total = 0;
for (Map.Entry<Long, Long> entry : CassandraTimer.histogram.entrySet()) {
long value = entry.getKey() * entry.getValue();
total += value;
}
double sum = 0.95*total;
double totalSum = 0;
SortedSet<Long> keys = new TreeSet<Long>(CassandraTimer.histogram.keySet());
for (long key : keys) {
totalSum += CassandraTimer.histogram.get(key);
if(totalSum >= sum) {
System.out.println(key);
}
}
}
谁能看一下,让我知道我是否写对了?