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 )进行排序。

另外,大家可以参考一下:
https://www.cnblogs.com/zz22–/p/10705970.html
https://www.cnblogs.com/xudong-bupt/p/3168618.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值