gpt4 book ai didi

java - 瓦丁网格 : How to have a Ranking row

转载 作者:行者123 更新时间:2023-11-30 01:57:15 25 4
gpt4 key购买 nike

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

enter image description here

我将排名数字实现为一列,如下所示:

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()

最佳答案

这可以通过稍微更改 getRowIndex 方法中的代码来实现(我将其命名为 getRanking,因为它不再是一个简单的索引)。技巧是存储当前/迭代行的 thfr 以便下一行进行比较。 如果得分相同,请勿提高排名

// class fields
private TeamHasFormatRecord lastIteratedThfr;
private int ranking = 0;

private String getRanking(TeamHasFormatRecord thfr)
{
// hasSameScore() will check for equal points, mean, and standardDerivation.
if(lastIteratedThfr == null || !thfr.hasSameScore(lastIteratedThfr)){
ranking++;
}
lastIteratedThfr = thfr; // store this thfr for the next thfr to compare to
return String.valueOf(ranking);
}

仅当您事先对网格进行排序并且不允许用户重新排序时,此解决方案才有效。我想你已经这么做了。

关于java - 瓦丁网格 : How to have a Ranking row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53998516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com