Comparable和Comparator的区别

Java中针对类对象的排序比较,提供了两个对应的接口Comparable和Comparator。

  Comparable的中文意思就是可被排序的,代表本身支持排序功能。只要我们的类实现了这个接口,那 么这个类的对象就会自动拥有了可被排序的能力。(这就是这是JAVA自带的排序方式,一个针对于int类型大小的排序,一个是针对由字母组成String类型的字母的排序(在底层是将Sting 类型中的每一个字母提取出来作比较,字母顺序小的在前,字母顺序大的在后面))

而且这个排序被称为类的自然顺序。这个类的对象的 列表可以被Collections.sort和Arrays.sort来执行排序。同时这个类的实例具备作为sorted map的key和 sorted set的元素的资格。

这个方法主要就是为了定义我们的类所要排序的方式。compareTo方法用于比较当前元素a与指定元素 b,结果为int值,如果当前元素a-指定元素 b,代表数组或集合是按升序列;如果int=0,代表元素a与b相等;如果指定元素 b-当前元素a,代表数组或集合是按降序列;

Comparator中文译为比较器,它可以作为一个参数传递到Collections.sort和Arrays.sort方法来指定某 个类对象的排序方式。同时它也能为sorted set和sorted map指定排序方式。 Comparator接口内部只有一个比较方法: Comparable可以看做是内部比较器,Comparator可以看做是外部比较器。一个类,可以通过实现 Comparable接口来自带有序性,也可以通过额外指定Comparator来附加有序性, 二者的作用其实是 一致的。

那在什么时候用Comparator呢?当Comparable的排序方式无法满足项目的需求的时候,或者在面对满足多种的排序要求时,就可以用Comparator

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值