Comparable和 Comparator

作者:杨裙
本次任务完成时间:2019年5月22日
开发工具与关键技术:MyEclipse 10、Java
一、 Comparable
1、Comparable是一个排序接口,此接口强行对实现它 的每一个类的对象进行排序,Comparable接口会覆盖compareTo方法。
2、Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。
3、实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指定比较器。
4、Comparable相当于“内部比较器”,在该类里写compare方法,用comparable也比较简单,只要实现Comparable接口的对象直接就成为一个可以比较的对象,但是需要修改源代码。
5、刚开始创建类的时候,需要先实现一下 Comparable,实现之后会有提示需要生成compareTo(T o)方法,如下图:
在这里插入图片描述
6、compareTo(T o)的方法:比较此对象与指定对象的顺序。如果需要排序的顺序是从小到大,那就用:this-o;如果需要排序的顺序是从大到小:o-this;如果比较某某条件时,如果它们的值相等,那么就比较另一个:return this.name .compareTo(o.name);
如下图 :
在这里插入图片描述
7、 当在类的内部写完排序的方法之后,就可以在类的外部进行调用。
二、 Comparator
1、 Comparator是比较接口(比较器),我们若需要控制某个类的次序,可以建立一个该类的“比较器”进行排序,Comparator接口覆盖compare方法。
2、 Comparator比较器也是可以将Comparator传递给sort方法(如Collection.sort或Arrays.sort),从而允许在排序上实现精确控制。
3、 Comparator是相当于“外部比较器”,这个比较器不需要像Comparable一样在类内部实现方法,它只需要在外部引用的时候,实现Comparator接口即可,如下图所示:
在这里插入图片描述
4、当实现Comparator接口:它一定要实现compare(T o1,T o2)函数,但可以不实现equals(Object obj)函数。当遇到的需求是要从小到大排序,那么就要用o1 – o2。如果是从大到小排序:o2 - o1。如果排序的结果相等,那么就要通过另外的值进行比较,o1:指的是要比较的第一对象,o2:指的是要比较的第二对象。
5、它返回是根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。
6、使用Comparator排序接口的好处是不需要修改源代码,而是另外实现一个比较器,当某个自定义的对象需要作比较的时候,把比较器和对象一起传递过去就可以比大小了。在Comparator里面用户可以自己实现复杂的通用的逻辑,使其可以匹配一些比较简单的对象,那样就可以节省很多重复劳动了。
整体效果图:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值