按降序排序ArrayList

时间:2015-04-23 18:33:53

标签: java sorting arraylist

所以我试图将我的ArrayList从最大到最小排序。用户只能输入数字,然后将其转换为字符串。这一切都很有效,但是当我显示我的分数时,我会得到类似的东西......

98
81
81
76
64
105
103
100

任何人都知道如何排序...

105
103
100
98
81
81
76
64

3 个答案:

答案 0 :(得分:3)

您将数字保持为String s,因此您按字典顺序对它们进行排序('9''1'之后)。相反,您应该将字符串解析为Integer(例如,使用Integer.valueOf)并存储在ArrayList<Integer>中。现在,当您对它进行排序时,将根据它们的数值来评估元素。

答案 1 :(得分:2)

Dom - 请记住,字符串是一串字符,每个字符都有一个整数值。排序字符串!==排序数字。

答案 2 :(得分:2)

这是代码

    List<String> firstArrayList = new ArrayList<String>();
    firstArrayList.add("4"); // .add(readUSerInput());
    firstArrayList.add("30");
    firstArrayList.add("1");
    firstArrayList.add("02");

    ArrayList<Integer> newArrayList = new ArrayList<Integer>();

    for(String numero: firstArrayList){
        newArrayList.add(Integer.parseInt(numero));
    }

    newArrayList.sort(Collections.reverseOrder());

    // To check
    for(Integer numero: newArrayList){
        // use a Scanner() to print numero to the screen
    }