java - Vaadin Grid:如何有一个排名行
问题描述
我正在使用网格来显示玩家的排名。该列表按后端的各种比较器排序,但可能仍然存在 2 行具有相同排名的情况。在下面的示例中,前两行应该有编号#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
推荐阅读
- visual-studio - 如何让人们在不使用 Anydesk 或虚拟机的情况下访问我的 Visual Studio 社区 2019
- javascript - Javascript上的日期时间戳问题
- asynchronous - 使用异步时,SqlClient 连接池已满
- pandas - “pydantic\validators.py”:没有找到验证器
- qemu - amd64 主机上的 virt-install aarch64 vm 失败
- github - Github 在私人仓库中提及
- c# - 在现有 ASP.NET 项目中更新 .NET 和 Entity Framework 版本
- markdown - 即使启用了 showrefs,doxygen 也会隐藏节/子节的 refs/xrefitem
- apache - 如何将输入的子文件夹设置为 root?
- javascript - 发送邮件不适用于复制的数据列表