Java 排名方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

// 获取排行榜
public static Map<Double, Integer> getRankContainer(List<BigDecimal> list) {
Map<Double, Integer> rankContainer = new HashMap<>();

list.sort(Comparator.reverseOrder());

int rank = 0, repeatCount = 0;
BigDecimal prev = BigDecimal.valueOf(Long.MIN_VALUE);
for (BigDecimal currVal : list) {
if (currVal.compareTo(prev) == 0) {// 与上个值相等,重复次数+1
repeatCount++;
} else {// 与上个值不等,重复次数归0
prev = currVal;
rank = rank + repeatCount + 1;
repeatCount = 0;
}
rankContainer.put(currVal.doubleValue(), rank);
}

return rankContainer;
}