用Java自带的库实现数组由大到小排序

本文介绍如何使用Java中的Arrays.sort方法对整型数组进行降序排序,并演示了使用Comparator接口实现自定义排序逻辑的方法。同时,文章还展示了如何对字符串数组进行排序并忽略大小写,以及如何创建一个反转顺序的优先队列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.问题

例如arr = [13,2,41,62,36,624,25]这样一个数组,在解决问题的过程,有时候我们需要将获得这个数组从大到小排序,而库中自带的方法是Arrays.sort(arr),但是其实现的是数组从小到大排序

2.分析

然后就想使用重载方法sort(T[] a, Comparator<? super T> c) 方法作用:根据指定的比较器引发的顺序对指定的对象数组进行排序
然后就爆出如下错误。
在这里插入图片描述
原因是定义数组的时候用的是基本数据类型int,只要将基本数据类型改成对应的包装类就可以了。

还可以使用另一种方法,Arrays.sort(arr3, Collections.reverseOrder()),其中Collections.reverseOrder()的作用是返回一个比较器,它对实现Comparble接口的对象集合施加了自然排序的相反

3.代码实现

    @Test
    public void test1() {
        Integer[] arr1 = {13,2,41,62,36,624,25};
        Arrays.sort(arr1, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1;
            }
        });
        System.out.println("arr1= " + Arrays.toString(arr1));
        Integer[] arr2 = {13,2,41,62,36,624,25};
        // 使用lambda表达式简化流程
        Arrays.sort(arr2,(o1,o2) -> {
            return o2 - o1;
        });
        System.out.println("arr2= " + Arrays.toString(arr2));
        Integer[] arr3 = {13,2,41,62,36,624,25};
        // 使用lambda表达式简化流程
        Arrays.sort(arr3, Collections.reverseOrder());
        System.out.println("arr3= " + Arrays.toString(arr3));
    }
    @Test
    public void test2() {
        String[] strArray1 = new String[]{"Z", "a", "D"};
        Arrays.sort(strArray1);
        System.out.println("strArray1= " + Arrays.toString(strArray1));
        String[] strArray2 = new String[]{"Z", "a", "D"};
        // 字符串排序(忽略大小写),String.CASE_INSENSITIVE_ORDER就是返回一个忽略大小写的比较器
        Arrays.sort(strArray2, String.CASE_INSENSITIVE_ORDER);
        System.out.println("strArray2= " + Arrays.toString(strArray2));
    }

优先队列的反转

PriorityQueue<Integer> queue = new PriorityQueue<>((a, b) -> b - a);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值