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

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);
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值