我正在使用网格显示球员排名。该列表由后端的各种比较器进行排序,但是可能仍然存在两行具有相同排名的情况。在下面的示例中,前两行应为数字#1,后两行应均为#2。
我将排名数字实现为以下列:
rankings.addColumn(this::getRowIndex).setWidth("2em")
.setResizable(true);
使用此方法:
private String getRowIndex(TeamHasFormatRecord thfr)
{
index++;
return String.valueOf(index);
}
这是一个基本的计数器。我能想到的唯一方法是基本上获取每个条目并将其放在列表中,但是我认为这可能太繁琐且无法很好地升级。
有什么建议么?
更新资料
这是当前的比较器:
Comparator.comparingDouble((TeamHasFormatRecord thfr) -> thfr.getPoints())
.thenComparingDouble(thfr -> thfr.getMean())
.thenComparingDouble(thfr -> thfr.getStandardDeviation())
.reversed()
最佳答案
创建一个TreeSet并将每行的点添加到集合中。使用集合的长度返回排名。
(加10){10}-> 1
(加10){10}-> 1
(加0){10,0}-> 2
(加0){10,0}-> 2