java中常用的排序方法

1.调用Arrays.sort()对一维数组排序
import java.util.*;
public class Main {
          
   
    public static void main(String[] args) {
          
   
        //升序排列
        int[] array = {
          
   6,1,7,8,5,3,2,10,9,4};
        Arrays.sort(array);
        System.out.println(Arrays.toString(array));
        //降序排列
        Integer[] array2 = {
          
   6,1,7,8,5,3,2,10,9,4};
        Arrays.sort(array2,Collections.reverseOrder());
        System.out.println(Arrays.toString(array2));
        
        /*
        上面的升序排列也可以写成:
        Integer[] array = {6,1,7,8,5,3,2,10,9,4};
        Arrays.sort(array);
        System.out.println(Arrays.toString(array));
         */
    }
}

运行结果:

2.通过实现Comparator接口完成二维数组/复合类型排序
import java.util.*;
public class Main {
          
   
    public static void main(String[] args) {
          
   
        int[][] array = {
          
   {
          
   5,0},{
          
   7,0},{
          
   6,0}};//定义了array[3][2]大小的二维数组
        Arrays.sort(array,new MyComparator());//以一维数组的第一个元素的大小排序
        for (int[] row:array)
            System.out.println(Arrays.toString(row));//输出排序后二维数组
    }
}

class  MyComparator implements Comparator{
          
   
    @Override
    public int compare(Object o1, Object o2) {
          
   
        int[] a=(int[])o1;
        int[] b=(int[])o2;
        //升序
        if (a[0]>b[0])
            return 1;
        if (a[0]<b[0])
            return -1;
        return 0;
        //降序
        /*if (a[0]>b[0])
            return -1;
        if (a[0]<b[0])
            return 1;
        return 0;*/
    }
}

运行结果:

3.利用Collections.sort()对动态数组排序
import java.util.*;
public class Main {
          
   
    public static void main(String[] args) {
          
   

        ArrayList<Integer> arrayList3 = new ArrayList<Integer>();
        for(int i=0;i<5;i++)
            arrayList3.add(new Random().nextInt(100));//随机产生5个100以内的数add到ArrayList3

        System.out.print("排序前:");
        for (Integer r:arrayList3)
        {
          
   
            System.out.print(r+" ");
        }
        System.out.println();

        Collections.sort(arrayList3, new Comparator<Integer>() {
          
   
            @Override
            public int compare(Integer o1, Integer o2) {
          
   
                if (o1>o2)
                    return 1;
                if (o1<o2)
                    return -1;
                return 0;
            }
        });
        System.out.print("排序后:");
        for (Integer r:arrayList3)
        {
          
   
            System.out.print(r+" ");
        }
        System.out.println();
    }
}

运行结果:

总结一下: java中常用的排序方法有Arrays.sort()和Collections.sort()两种: Arrays.sort() 主要是针对各种数据类型(基本数据类型和引用对象类型)的数组元素排序。需要注意的是:比如int[],double[],char[]等基数据类型的数组,Arrays类只是提供了默认的升序排列,没有提供相应的降序排列方法;要对基础类型的数组进行降序排序,需要将这些数组转化为对应的封装类数组,如Integer[],Double[],Character[]等,对这些类数组进行排序(逆序需要实现Comparator接口)。 Collection.sort() 主要是针对集合框架中的动态数组,链表,树,哈希表等( ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap )进行排序。

另外,大家可以参考一下:

经验分享 程序员 微信小程序 职场和发展