use*_*889 2 java android arraylist
我正在为android开发一款游戏,我将分数保存在“100&playername1,93&playername1,1950&playername2”等形式的文本文件中。即它是完全无序的。
现在我正在尝试制作一个高分界面,我知道要对分数进行排序,我应该使用String.split(",")后面的方法String.split("&")[0]来获取分数并将它们放入 ArrayList 中,然后调用Collections.compare(list). 然而,一旦我这样做了,我就无法找到与乐谱相关的名称。
有人可以帮我解决这个问题吗?我尝试过在括号之间对整个字符串进行排序(将短语“100&playername1”放入数组中,但这无法根据数量级进行排序。我的意思是它会将 100 放在 1950 之前。
谢谢你的帮助!
创建一个名为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;
}
}
Run Code Online (Sandbox Code Playgroud)
创建一个名为UsernameScorePairComparatorImplements 的类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();
}
}
Run Code Online (Sandbox Code Playgroud)
Collections.sort然后像这样使用:
Collections.sort(listofpairs, new UsernameScorePairComparator())
我不记得它是按升序还是降序排序。如果是升序,则return usp1.getScore() - usp2.getScore();改为return usp2.getScore() - usp1.getScore();
编辑
AComparator基本上比较两个对象。在其compareTo方法中,如果第一个小于第二个,则返回负值;如果第一个大于第二个,则返回正值;如果两者相等,则返回零。
您可以实现Comparator(就像我刚才所做的那样)来满足您的需求。然后,使用它Comparator,您可以使用标准 API 方法,例如Collections.sort().
我希望这能起作用!
| 归档时间: |
|
| 查看次数: |
974 次 |
| 最近记录: |