Arrays.sort()的用法

首先Arrays是一个工具类,所以Arrys.sort()这个方法是一个静态方法,先看看sort的源代码().

public static void sort(int[] var0) {
        DualPivotQuicksort.sort(var0, 0, var0.length - 1, (int[])null, 0, 0);
    }

    public static void sort(int[] var0, int var1, int var2) {
        rangeCheck(var0.length, var1, var2);
        DualPivotQuicksort.sort(var0, var1, var2 - 1, (int[])null, 0, 0);
    }

这里只是拿int数组出来举例,从原来的代码可以看出不只是int类型的,在sort里面有8个基本数据类型的数组都可以进行排序。当然,对象的也有,这里就先看的是sort方法。sort调用的是也是一个算法类, 在第一个sort方法中,只需要填写数据就行,而sort方法里面的DualPivotQuicksort这个方法里面才是具体的实现了算法的细节,当然这里也没必要去先深入了解,先把基本的会用才是。
而在第二个方法中的sort方法是在部分范围内去排序,就是在第二个参数上输入在左边的开始位置,第三个就是输入右边的截止范围,通过源代码的这段可以知道,范围是闭合的,也就是输入的var1和var2是包含在里面的。

   int var4 = var2 - var1 + 1;

而在排序之前,由于输入的范围可能会超过临界值或者是在负数的情况,所以在排序之前会进行范围检查,如下:

  rangeCheck(var0.length, var1, var2);

来看具体的rangeCheck方法:

  private static void rangeCheck(int var0, int var1, int var2) {
        if (var1 > var2) {
            throw new IllegalArgumentException("fromIndex(" + var1 + ") > toIndex(" + var2 + ")");
        } else if (var1 < 0) {
            throw new ArrayIndexOutOfBoundsException(var1);
        } else if (var2 > var0) {
            throw new ArrayIndexOutOfBoundsException(var2);
        }
    }

从源代码中也可以看见,也是用静态类来实现方法,第一个if说的就是var1必须要小于或者等于var2,不然会抛出不合法的输入错误,并提示var1和var2的关系。在第二个条件判断里面,var1如果小于零,就会抛出超出临界值的异常类,第三个条件是判断var2右边的范围不能超过其当前数组的范围长度,不然也会抛出数组范围抛出异常。

只有经过了范围的检查,才能够进行排序,好了,这就是我对这次sort排序的一次小小的见解,如有其他的见解,可以一起讨论,一起学习一下。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值