我正在使用网格显示球员排名。该列表由后端的各种比较器进行排序,但是可能仍然存在两行具有相同排名的情况。在下面的示例中,前两行应为数字#1,后两行应均为#2。

java - Vaadin Grid:如何获得排名行-LMLPHP

我将排名数字实现为以下列:

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

10-08 13:12