Comparable和Comparator是两个用于定义对象之间比较规则的接口。

  一、public interface Comparator<T>

  Comparator接口中有两个方法(不止两个):

  1、int compare(Object obj1,Object obj2)

  obj1>obj2,返回正值;

  obj1=obj2,返回0;

  obj1<obj2,返回负值。

  通过重写compare()方法,可以改变对象排序的方式。

  2、boolean equals(Object obj)

  拿obj和调用该方法的对象按规则比较,相同返回true,不同返回false。

  二、public interface Comparable<T>

  其中只有一个方法:int compareTo(T o)

  当需要让集合对其中的对象进行排序时,可以让对象实现(也必须实现)Comparable接口,这意味着通过compareTo()定义比较规则。

  三、比较

  Comparable接口是一种侵入式的设计,即他必须让被排序的类中实现compareTo()方法。如果一个类是第三方提供的,此时是无法通过Comparable接口进行对象排序操作的。

  为了解决这一问题,必须使用比较器Comparator。

  集合类可以通过比较器来精确定义按照何种规则排序,Comparator可以让代码不入侵类的内部定义排序规则。

  显然,比较器Comparator比Comparable接口更加灵活,不入侵类,更符合单一职责的设计哲学。

  当有了新的比较方式,只需要修改比较规则类,即实现Comparator接口的类。

最新文章

  1. thinkphp中的setInc、setDec方法
  2. dcraw源码解析
  3. 2016 Multi-University Training Contest 7
  4. oracle 复杂语句
  5. Android UI学习 - FrameLayou和布局优化(viewstub)
  6. HDU-4738 Caocao&#39;s Bridges 边联通分量
  7. HTML Canvas 鼠标画图
  8. IOS自定义alertview
  9. bootsrtap (-)
  10. mahout贝叶斯算法开发思路(拓展篇)1
  11. android之JSON 进行网络数据交换
  12. ACE定时器
  13. Java线程:总结
  14. 限制容器对内存的使用 - 每天5分钟玩转 Docker 容器技术(27)
  15. jpg、jpeg、png...&#160;的区别
  16. Redis 常用操作命令,非常详细!
  17. react-conponent-secondesElapsed
  18. 搞了一下午时间全浪费在这了,其实是自己拷贝了patch文件,导致tab变成了空格的错
  19. Visual Studio进行Web性能测试- Part II
  20. .NET, ASP.NET, ADO.NET, C# 区别

热门文章

  1. 1-mybatis-概览
  2. Oracle安装过程中Oracle Database Configuration Assistant失败问题解决
  3. maven 打jar包和war包
  4. Ironic 裸金属管理服务的网络模型
  5. kafka Windows安装
  6. nhibernate Stuty
  7. Django auth 用户验证
  8. 前端vscode常用插件
  9. 【学习笔记】APP页面,随机选择一个选项
  10. Django 邮箱找回密码!!!!!!!!!!!!!!!!