comparable 和comparator的区别

本文深入解析了Comparable与Comparator两个接口的区别及应用场景。Comparable接口作为内部比较器,通过实现compareTo方法使对象能够自我比较,适用于对象自身支持排序的情况。而Comparator接口作为外部比较器,提供了更灵活的比较方式,适合于对象不支持自我比较或需要自定义排序规则的场景。

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

comparable

comparable可以认为是一个内部比较器,其中有一个compareTo(T t)的方法需要实现。

实现了Comparable接口的类有一个特点,就是这些类是可以和自己比较的,至于具体和另一个实现了Comparable接口的类如何比较,则依赖compareTo方法的实现,compareTo方法也被称为自然比较方法

如果开发者加入Collection的对象想要Collections的sort方法帮你自动进行排序的话,那么这个对象必须实现Comparable接口。

compareTo方法的返回值是int,有三种情况:

1、比较者大于被比较者(也就是compareTo方法里面的对象),那么返回正整数

2、比较者等于被比较者,那么返回0

3、比较者小于被比较者,那么返回负整数

comparable接口很多类实现这个接口,提供该类对象之间的比较的默认实现,如String,Integer等。

comparator

comparator是一个外部比较器,其中只有一个compare(T t1,T t2)的方法需要实现

使用这个接口的两种原因:第一,一个对象不支持自己和自己的比较(没有实现comparable的接口),但是想对这两个对象进行比较。第二,一个对象虽然实现了Comparable接口,但是其中的compareTo方法的比较不是自己想要的。所以实现comparator接口,并重写方法compare来进行两个类的比较。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值