当前位置: 首页 > 知识库问答 >
问题:

在SortedMap(TreeMap)中使用“position”更新POJO属性

孔正文
2023-03-14

我正在尝试模拟一个游戏板,多个玩家可以提交他们的游戏分数。

波乔即是。java表示排行榜中的一个条目。注意overriden equals()方法。

Position是排行榜中的位置,1是得分最高的用户

public class EntryTreeMapOption {

private String uid;
private int score;
private int position;

public EntryTreeMapOption(String uid, int score) {

    this.uid = uid;
    this.score = score;

}

public EntryTreeMapOption() {

}

public String getUid() {
    return uid;
}

public void setUid(String uid) {
    this.uid = uid;
}

public int getScore() {
    return score;
}

public void setScore(int score) {
    this.score = score;
}

public int getPosition() {
    return position;
}

public void setPosition(int position) {
    this.position = position;
}

@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((uid == null) ? 0 : uid.hashCode());
    return result;
}

@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    EntryTreeMapOption other = (EntryTreeMapOption) obj;
    if (uid == null) {
        if (other.uid != null)
            return false;
    } else if (!uid.equals(other.uid))
        return false;
    return true;
}

@Override
public String toString() {
    return "Entry [uid=" + uid + ", score=" + score + ", position=" + position + "]";
}}

我使用一个树状图来存储条目,根据得分,它们会自动排序

public class GameDefault2 {

    private TreeMap<EntryMapOption, String> leaderBoardEntryUserMap;

    {

        leaderBoardEntryUserMap = new TreeMap<>(Comparator.comparingInt(EntryTreeMapOption::getScore).reversed()
            .thenComparing(EntryTreeMapOption::getUid));
    }

    @Override
    public void submitScore(String uid, int score) {

        EntryMapOption newEntry = new EntryMapOption(uid, score);
        leaderBoardEntryUserMap.put(newEntry, uid);

    }

    @Override
    public List<EntryMapOption> getLeaderBoard(String uid) {

        List<EntryMapOption> userEntryList = .....
        .....
        .....

        return entriesOptionTwo;

    }

}

如何设置条目的“位置”字段?例如:下面是按分数排序的条目,如何获得相应的“索引/位置”并将其设置在条目中?

Entry [uid=user1, score=14, position=0]
Entry [uid=user2, score=8, position=0]
Entry [uid=user3, score=7, position=0]
Entry [uid=user4, score=7, position=0]
Entry [uid=user5, score=4, position=0]
Entry [uid=user6, score=3, position=0]
Entry [uid=user7, score=3, position=0]
Entry [uid=user8, score=1, position=0]

共有1个答案

嵇浩然
2023-03-14

根据我的理解,您应该能够使用listarray=List.toArray()将列表转换为数组,然后使用

用于(int i=0;i ion=i+1;}<>

将它们的位置设置在它们的索引中。(加一,因为获胜者应该是第一名,而不是第零名)

 类似资料:
  • 全部显示 返回或设置指定命令栏的位置。MsoBarPosition 类型,可读写。MsoBarPosition 可为以下 MsoBarPosition 常量之一:msoBarBottommsoBarFloatingmsoBarLeftmsoBarMenuBarmsoBarPopupmsoBarRightmsoBarTop 示例 本示例对命令栏集合中的元素逐个进行如下操作:将自定义命令栏定位在应用程

  • 我想使用DynamoDBMapper只更新项目的特定属性。例如,我有一个带有属性的用户表。,id,name,地址。 我想只更新地址属性,而不是其他字段(选择性更新)。 我可以使用UpdateItemSpec找到一个示例,但在DynamoDBMapper中找不到。使用UpdateItemSpec,我可以使用withUpdateExpression()定义更新表达式。更多细节可以在这里找到。 是否有任

  • 我想使用POJO作为源来更新JOOQ记录中更改的字段<代码>记录。from(Object)几乎正确,但根据文档 结果记录的所有值的内部“更改”标志都将设置为true。 我只希望实际更改的字段(由对象决定。等于(对象,对象))更新其标志。 这有两个原因: 我不想触发插入

  • 问题内容: 我有一个 保持地图根据浮动量排序的最佳方法是什么? 是最好的答案??如何使用? 我只创建一次地图,并替换了经常使用的和。 问题答案: 我会用,它实现。正是为此目的而设计的。 例: 有关SortedMap的信息,请参见Java教程页面。 和这里的教程列表相关TreeMap的。

  • 我有一个表单,其中包含所需的数据,我使用了以下代码: 在同一页面上有一个datatable,它包含我通过表单添加的对象(付款)。添加对象后,我使用以下代码对datable进行更新以添加新对象: 我遇到的问题是,当数据没有输入,我单击按钮,更新完成,表显示为空!但是,验证消息正确地显示为强制数据。 datatable是 我在CDI中使用,因为托管bean如下所示://import //类 }

  • 我使用以下方法在映射中映射值: 这里建议:https://stackoverflow.com/a/25905196/411965 我想创建一个与SortedMap类似的方法: 用java 8做这件事的方法是什么?