繁体   English   中英

如何按升序对数字数组列表排序

[英]how to sort numerical arraylist in ascending order

我有一个使用Collections.sort排序的ArrayList 但是结果看起来像下面这样。 我如何使其升序?

[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]

如果您不将数字类型和字符串类型混合使用, 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);
         }
      }
   }

输出: 在此处输入图片说明

祝好运;

Java 8:

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

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

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

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

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

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);

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM