Comparable和Comparator比较器

本文介绍了Java中的Comparable接口和Comparator接口在自定义类类型比较中的应用,包括Comparable用于类内排序,需重写compareTo方法,Comparator则提供了更灵活的排序机制,可通过匿名内部类或自定义类实现compare方法。当内置排序规则不满足需求时,Comparator允许动态定制排序规则。

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

 对于自定义类的类型进行比较就需要制定比较规则,就出现了这两种比较方式,区别就是:

    Comparable比较器需要写在类内部,即需要排序的类需要继承此接口,然后在类内部重写compareTo方法,在主方法中调用Arrays.sort(需要排序的类名)或Collection.Sort(),在compareTo方法中定义排序规则(eg:根据特定的属性进行排序,由返回值确定)

Comparable详解

定义一个实现了Comparable接口的实现类:,重写CompareTo方法,用id作为排序依据(两数相减的顺序代表了正序或逆序)

    调用时候,如果student是Array类型的话,就调用Array.sort(),这时候排序就会按照重写的compareTo的规则进行了排序了,否则就会报错,因为jvm不知道按照什么依据进行排序,而Integer或者String类型的数组本身已经在类里面实现了Comparable接口重写了compareTo方法:

Comparator详解

Compatator比较器是在使用的时候用匿名内部类的方式进行构造(可以灵活的制定排序规则),重写compare方法,也可以在自定义类中实现Compatator接口,重写compare方法

匿名内部类的实现方式:

Comparator最明显的优点就是比较灵活,具有较低的耦合性:

如果实现了comparator或者comparable的类,其类内部的排序规则不能够满足自己的排序要求的时候,就可以在外部调用Array.sort/Collection.sort的时候重写comparator的匿名内部类,按照自己的排序要求实现自定义排序;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值