如何按升序对数字arraylist进行排序

时间:2017-03-31 02:05:07

标签: java sorting arraylist

我有ArrayList我使用Collections.sort排序。 但结果看起来如下。如何让它升序?

[0, 1, 11, 12, 12, 13, 13, 14, 14, 16, 16, 16, 17, 17, 17, 18, 18, 19, 2, 2, 20, 20, 20, 21, 21, 22, 4, 7, 7, 7, 8, 9, 9, 9, 9, 9]

4 个答案:

答案 0 :(得分:1)

如果你没有混合数字和字符串类型,

Collections.sort方法可以正常工作;
这是一个例子:

       import java.util.*;
       public class ArrayListOfIntegers  {

        public static void main(String args[]){
        ArrayList<Integer> arraylist = new ArrayList<>();
        arraylist.add(12);
        arraylist.add(0);
        arraylist.add(12);
        arraylist.add(1);
        arraylist.add(12);
        arraylist.add(11);
       /* ArrayList before the sorting*/
        System.out.println("Before Sorting:");
        for(int counter: arraylist){
             System.out.println(counter);
         }

        /* Sorting of arraylist using Collections.sort*/
           Collections.sort(arraylist);

        /* ArrayList after sorting*/
         System.out.println("After Sorting:");
         for(int counter: arraylist){
             System.out.println(counter);
         }
      }
   }

输出:enter image description here

祝你好运;

答案 1 :(得分:1)

Java 8:

List<String> numbers = new ArrayList<>();
    // add numbers...
    Collections.sort(numbers, Comparator.comparing(Integer::valueOf));

答案 2 :(得分:0)

看起来您的ArrayList包含字符串而不是数字。您可以通过将自定义Comparator传递给sort()方法按数字顺序对其进行排序。

在java 8中,您可以使用Comparator.comparingInt()进行实际比较,结合Integer.parseInt()方法执行从string到int的转换:

ArrayList<String> list = new ArrayList<>();
// ... add values    

list.sort(Comparator.comparingInt(Integer::parseInt));

答案 3 :(得分:0)

Java7: Collections.sort()方法对String和Integer数据类型的工作方式不同。
我假设你有ArrayList<String>。一种解决方案是将其转换为ArrayList<Integer>,然后通过Collections.sort()

    ArrayList<String> strList = new ArrayList<String>();
    strList.add("0");
    strList.add("1");
    strList.add("11");
    strList.add("12");
    strList.add("2");
    strList.add("02");
    strList.add("004");
    strList.add("9");
    strList.add("20");

    System.out.println("strList Unsorted :" + strList);
    Collections.sort(strList);
    System.out.println("strList Sorted :" + strList);

    //Convert ArrayList<String> to ArrayList<Integer>
    List<Integer> intList = new ArrayList<Integer>(strList.size());
    for (String strValue : strList) {
        intList.add(Integer.parseInt(strValue));
    }

    System.out.println("intList Unsorted :" + intList);
    Collections.sort(intList);
    System.out.println("intList Sorted :" + intList);

enter image description here