Comparable接口与Camparator接口区别

在Java中,若想实现自定义类的比较(目的是给对象排序),提供了以下两个接口,

1.Comparable接口(内部比较器):
  • 若一个类实现了Comparable接口,就意味着该类支持排序。存放该类的Collection或数组,可以直接通过Collection.sort()Arrays.sort()进行排序。
  • 实现了Comparable接口的类可以直接存放在TreeSet或TreeMap中。Comparable接口只有一个函数:public int compare To(T o);返回值三种情况:
        返回正数:表示当前对象大于目标对象
        返回0:表示当前对象等于目标对象
        返回负数:表示当前对象小于目标对象
2.Comparator(外部排序接口):

前提:
  若要控制某个自定义类的顺序,而该类本身不支持排序(类本身没有实现Comparable接口)。我们可以建立一个该类的“比较器”来进行排序。比较器实现Comparator接口即可。
名词解释:
   “比较器”: 实现了Comparator接口的类作为比较器,通过该比较器来进行类的排序。
原理:
  Comparator接口包含两个方法,compare()equals()。其中compare()方法用来给两个输入参数排序equals()方法需要一个对象作为参数,它用来决定输入参数是否和comparator相等。只有当输入参数也是一个comparator并且输入参数和当前comparator的排序结果是相同的时候,这个方法才返回true。
Int compare(T o1, T o2);返回值:
    返回正数: o1>o2
    返回0: o1=o2
    返回负数: o1<o2
Comparable接口与Comparator接口关系:
  Comparable是排序接口,若一个类实现了Comparable接口,意味着该类支持排序,是一个内部比较器(自己去和别人比,亲历亲为)。
  Comparator接口是比较器接口,类本身不支持排序,专门有若干个第三方的比较器(实现了Comparator接口的类)来进行类的排序,是一个外部比较器(策略模式,类比安兔兔)。

import java.util.Comparator;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值