gpt4 book ai didi

java - 在 SortedMap(TreeMap) 中使用 'position' 更新 POJO 属性

转载 作者:太空宇宙 更新时间:2023-11-04 11:08:40 26 4
gpt4 key购买 nike

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

POJO 即。 Entry.java 代表排行榜中的一个条目。 注意重写的 equals() 方法。

Position is the position in the leaderboard, 1 being the user with the highest score

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 + "]";
}}

我使用 TreeMap 来存储条目,根据分数,它们会自动排序

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]

现在,user1 条目应具有position=1,user2 条目应具有position=2,依此类推。

最佳答案

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

for (int i = 0; i < listArray.length; i++) {
listArray[i].position = i + 1;
}

将其位置设置为其索引。 (加一,因为获胜者应该是第一,而不是零)

关于java - 在 SortedMap(TreeMap) 中使用 'position' 更新 POJO 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46218998/

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