你如何用int +字符串条目对一个arraylist进行数字排序

时间:2016-01-02 22:17:55

标签: java sorting arraylist

我在排行榜上工作,我的数据存储在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);

将其显示为高分图表。

1 个答案:

答案 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());