我在排行榜上工作,我的数据存储在ArrayList中
int + " " + username
我一直试图对其进行排序以显示。
public static void main (String[] args) throws java.lang.Exception
{
List<String> leaderboard = new ArrayList<String>();
leaderboard.add("11 John");
leaderboard.add("23 annie");
leaderboard.add("1 putin");
leaderboard.add("101 king");
Collections.sort(leaderboard);
for(int i = 0; i < leaderboard.size(); i++) {
System.out.print(leaderboard.get(i));
System.out.println();
}
}
按字母顺序输出:
1 putin
101 king
11 John
23 annie
当我需要时
1 putin
11 John
23 annie
101 king
并完成它我会使用
Collections.reverse(leaderboard);
将其显示为高分图表。
答案 0 :(得分:4)
您可以创建自定义Comparator
以数字方式处理字符串的第一部分:
public class NumericalStringComparator implements Comparator<String> {
@Override
public int compare (String s1, String s2) {
int i1 = Integer.parseInt(s1.split(" ")[0]);
int i2 = Integer.parseInt(s2.split(" ")[0]);
int cmp = Integer.compare(i1, i2);
if (cmp != 0) {
return cmp;
}
return s1.compareTo(s2);
}
}
然后,您可以按相反的顺序使用它来对您的收藏品进行排序:
Collections.sort(leaderboard, new NumericalStringComparator().reversed());