如何重写Collections的排序方法

一.概述

  • 在使用集合时,往往会将类的对象传入集合中,但当我们需要排序时,原有的.sort无法根据系统的规则来排序,所有这个时候需要我们重写排序规则
  • 第一步:需要将传入集合的对象类绑定接口Comparable
public class Studen implements Comparable {
  • 第二部:重写方法compareTo
public int compareTo(Object o) {
  • 第三步:在方法内实现判断标准

二.代码示例

  • 先创建个学生类,定义一个序号,和姓名的属性
/**
 * @ Author: Zhangyu
 * @ Date: 2020/7/31
 * @ Description:
 */
public class Studen implements Comparable {
    public int serialNumber;//序号属性
    public String name;//姓名属性

    public Studen(int serialNumber, String name) {//有参构造
        this.serialNumber = serialNumber;
        this.name = name;
    }
    
    @Override
    public int compareTo(Object o) {//重写的排序标准
        Studen stu=(Studen)o;//默认传入的时Object类型,转型成Studen类型1
        if (this.serialNumber>stu.serialNumber){//通过判断序号的大小来排序
            return 1;
        }else if (this.serialNumber<stu.serialNumber){
            return -1;
        }

        return 0;
    }
}

  • 测试类
/**
 * @ Author: Zhangyu
 * @ Date: 2020/7/30
 * @ Description:
 */
public class Test {

    public static void main(String[] args) {
        List<Studen> list = new ArrayList() ;
        Studen stu1 = new Studen(1,"小明");//创建对象stu1
        Studen stu2 = new Studen(2,"小张");//创建对象stu2

        list.add(stu2);//将学生对象传入集合list,这里先传入的小张
        list.add(stu1);//在传入小明

        Collections.sort(list);//排序
        for (Studen studen : list) {//输出排序结果
            System.out.println(studen.name);
        }
    }
}
//输出结果
小明
小张
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值