【Comparable和Comparator源码】

java.lang.Comparablepublic interface Comparable<T> {public int comparaTo(T o);
}------------------------------------------------------------------java.util.Comparatorpublic interface Comparator<T> {int compare(T o1,T o2);boolean equals(Object obj);
}

【Comparable接口】

1. 若一个类实现了Comparable接口,就意味着该类支持排序。假设存在实现了 Comparable接口的类的对象的List列表(或数组),则该List列表(或数组)可以通过Collections.sort(或Arrays.sort)进行排序。

2. 一个类实现了comparable接口表明这个类的对象之间是可以互相比较的。如果用数学语言描述的话就是这个类的对象组成的集合中存在一个全序。这样,这个类对象组成的集合就可以使用 Sort 方法排序了。

【Comparator接口】

1. 我们需要控制某个类的次序,而该类不支持排序(即没有实现Comparable接口)。那么,我们可以创建一个该类的比较器,这个比较器只需要实现Comparator。若一个类实现了Comparator接口,则它一定要实现compare(T o1,T o2)方法,但不一定要实现equals(Object obj)方法;

2. 如果类的设计师没有考虑到Compare的问题而没有实现Comparable接口,可以通过Comparator来实现比较算法进行排序;为了使用不同的排序标准做准备,比如:升序、降序

【两者比较】

1. 前者应该比较固定,和一个具体类相绑定,而后者比较灵活,它可以被用于各个需要比较功能的类使用

2. Comparable是排序接口;若一个类实现了Comparable接口,就意味着“该类支持排序”;而Comparator是比较器;我们若需要控制某个类的次序,可以建立一个“该类的比较器”来进行排序。

3. Comparable相当于“内部比较器”,而Comparator相当于“外部比较器”。

4. Comparable是通用的接口,用户可以实现它来完成自己特定的比较,而Comparator可以看成是一种算法的实现,在需要容器集合实现比较功能的时候,来指定这个比较器,这可以看成是一种设计模式,将算法和数据分离。

转载于:https://www.cnblogs.com/hwu2014/p/4479211.html

Comparable接口与Comparator接口相关推荐

  1. Java基础之Comparable接口和Comparator接口的比较

    前言 就是普普通通的写这么一篇文章,java集合类估计java程序猿都知道,那就写一点小众的. 在实际应用中,我们往往有需要比较两个自定义对象大小的地方.而这些自定义对象的比较,就不像简单的整型数据那 ...

  2. Comparable接口和Comparator接口

    目录 1 介绍 2 Comparable接口 3 Comparator接口 4 总结 1 介绍 有这样2个人,一个人光头,一个人有黑色头发,现在不允许染发,只允许光头的带假发,理由是有头发的人没有必要 ...

  3. Java6.0中Comparable接口与Comparator接口详解

    Java6.0中Comparable接口与Comparator接口详解 说到现在,读者应该对Comparable接口有了大概的了解,但是为什么又要有一个Comparator接口呢?难道Java的开发者 ...

  4. Comparable接口和Comparator接口的比较

    1.Comparable详解 1.1Comparable概述 来自java.lang.Comparable.Comparable是 排序接口.若一个类实现了Comparable接口,就意味着该类支持排 ...

  5. 深入理解 Comparable 接口和 Comparator 接口以及Arrays.sort()

    compareTo(Object o)方法是java.lang.Comparable<T>接口中的方法,当需要对某个类的对象进行排序时,该类需要实现Comparable<T>接 ...

  6. Comparable接口和Comparator接口的使用和区别

    Comparable Comparable接口在JDK8中的源码: package java.lang; import java.util.*;package java.lang; public in ...

  7. Java中比较对象的两个接口Comparable接口和Comparator接口

    2019独角兽企业重金招聘Python工程师标准>>> jdk文档是这样介绍的 1.  public interface  Comparable<T>:此接口强行对实现它 ...

  8. Java 中类的比较与排序方法(应用Comparable接口与Comparator接口)通俗易懂

    引言 在平时写Java的程序的时候,如果要进行一些基本类型的变量的比较,可以很方便得调用Math.max().Math.min()等方法,如果要对数组或者列表进行排序,也可以用Arrays.sort( ...

  9. java实现Comparable接口和Comparator接口,并重写compareTo方法和compare方法

    原文地址https://segmentfault.com/a/1190000005738975 实体类:java.lang.Comparable(接口) + comareTo(重写方法),业务排序类 ...

最新文章

  1. Matlab与ROS通信设置
  2. EdgeGallery — MEP — 系统架构
  3. VMware虚拟机中CentOS根分区的扩展
  4. Firefox 有 6 成用户仍使用 Add-On 扩展
  5. boost::minimum_degree_ordering用法的测试程序
  6. ImageView缩放选项
  7. python异步处理请求_如何一次在python中发送异步http请求?
  8. 算术的c语言程序设计,C 程序设计:变量与算术表达式
  9. jmeter学习指南之源码导入 IntelliJ IDEA
  10. 魔域java_java序列化
  11. 【编辑器】VSCode+TEXLIVE环境配置,以SJTUthesis为测试用例
  12. 七个月自学进微软——我的编程算法学习心得
  13. Atitit 局部图查找大图 方法 与 说明
  14. Altium Designer软件绘制stm32最小系统PCB图
  15. QThread线程详细用法
  16. Java中List集合去重
  17. STM32 HAL库 时钟芯片RX8025T IIC的读写操作,入过的坑
  18. 对比分析偏差率的五个常见疑问
  19. 前端如何进行seo优化
  20. eclipse中一些常见的报错处理

热门文章

  1. Word 2003高级技巧之可爱的锚标记
  2. shell中(字符串截取)
  3. nodejs源码—初始化
  4. BZOJ4653 洛谷1712 UOJ222:[NOI2016]区间——题解
  5. Oracle RAC禁用DRM
  6. linux自学笔记--nginx基本配置
  7. Android 网络连接状态的监控
  8. display vs visibility
  9. 高级Java服务端工程师要求
  10. cisco网络故障处理手册