gpt4 book ai didi

java - Android Collections.compare() 改变标准

转载 作者:搜寻专家 更新时间:2023-11-01 08:12:12 27 4
gpt4 key购买 nike

我正在为 android 开发游戏,我将分数保存在“100&playername1,93&playername1,1950&playername2”等形式的文本文件中,即它是完全无序的。

现在我正在尝试制作一个高分界面,我知道要对分数进行排序我应该使用 String.split(",") 然后是 String.split("&")[0] 获取分数并将它们放入 ArrayList 中,然后调用 Collections.compare(list)。然而,一旦我这样做了,我就无法找到与乐谱相关的名字。

谁能帮我解决这个问题。我已经尝试对括号之间的整个字符串进行排序(将短语“100&playername1”放入数组中,但不能根据数量级排序。我的意思是它会将 100 放在 1950 之前。

感谢您的帮助!

最佳答案

创建一个名为 UsernameScorePair 的类。拆分分数和用户名后,将它们成对放置(每个“分数和用户名”一个)。

例如,这个类定义可以工作:

公共(public)类 UsernameScorePair {

    private String name;
private int score;

public UsernameScorePair(String name, int score) {
this.name = name;
this.score = score;
}

public String getName() {
return name;
}

public int getScore() {
return score;
}

}

创建一个名为 UsernameScorePairComparator 的类来实现 Comparator .

compare(Object o1, Object o2) 方法中,将对象转换为 UsernameScorePairs 并比较分数。例如:

public class UsernameScorePairComparator {

public UsernameScorePairComparator() {
}

public int compare(Object o1, Object o2) {
UsernameScorePair usp1 = (UsernameScorePair)o1;
UsernameScorePair usp2 = (UsernameScorePair)o2;

return usp1.getScore() - usp2.getScore();
}
}

然后像这样使用 Collections.sort:

Collections.sort(listofpairs, new UsernameScorePairComparator())

我不记得是升序还是降序了。如果是升序,则只需将 return usp1.getScore() - usp2.getScore(); 更改为 return usp2.getScore() - usp1.getScore();

编辑

Comparator 基本上比较两个对象。在其 compareTo 方法中,如果第一个小于第二个则返回负值,如果第一个大于第二个则返回正值,如果两者相等则返回零。

您可以实现一个 Comparator(正如我刚刚所做的那样)以满足您的需要。然后,使用该 Comparator,您可以使用标准 API 方法,例如 Collections.sort()

希望这能奏效!

关于java - Android Collections.compare() 改变标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8781374/

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