【Java】Arrays类中的sort()方法改写

Arrays.sort()方法虽然功能强大,但是在平常的使用中难免会出现各种情况使得其无法满足我们的需求,这个时候就该用到:

Arrays.sort(a, fromIndex, toIndex, c);

这种用法了


先对方法中的各项参数进行解释:

a——需要进行排序的对象

fromIndex——排序进行的起始位置

toIndex——排序的终止位置

c——自定义的排序规则


实现的代码如下:


import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

//定义类a
class a{
    int n;
}

//定义类cmp,制定排序规则
class cmp implements Comparator<a>{

    public int compare(a A, a B) {
        if(A.n > B.n)return -1;
        if(A.n == B.n)return 0;
        if(A.n < B.n)return 1;
        return 0;
    }

}

public class Main{

    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
            a t[] = new a [n];
            for(int i = 0;i < n;i++){
                t[i] = new a();//为类分配内存必不可少
                t[i].n = sc.nextInt();
            }
            Arrays.sort(t,0,n,new cmp());
            for(int i = 0;i < n;i++)
                System.out.print(t[i].n+" ");
            System.out.println();
        }
    }
}

它的效果是对含有一个int型成员变量n的类a的数组按n的大小进行降序排序


在上面给出的代码中,最为关键的地方在于这一段:


//定义类cmp,制定排序规则
class cmp implements Comparator<a>{

    public int compare(a A, a B) {
        if(A.n > B.n)return -1;
        if(A.n == B.n)return 0;
        if(A.n < B.n)return 1;
        return 0;
    }

}

在compare()方法中,对类a进行排序的基准是类a中的成员变量n的大小,如上所说,这里演示的返还方式对应的是降序排列,反之则是升序,实际应用中还可以有更多的变化,可以完全不只是仅有一个参数参与的排序


PS:如果方法的应用对象是类,那么对于每一个对象来说,这一段都是必不可少的:

t[i] = new a();//为类分配内存必不可少

绝对不能少!绝对不能少!绝对不能少!(很重要所以说三遍)

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值