Comparable :自然排序(自己单独实现)

  • 自然排序的定义
    Comparable 接口强行对实现它的每个类的对象进行整体排序

  • 实现过程

    1. 实现 Comparable 接口的类必须实现 compareTo(Object obj) 方法,两个对象通过 compareTo 方法的返回值来比较大小 :
      ① 如果当前对象 this 大于形参对象 obj 则返回正整数;
      ② 如果当前对象 this 小于 形参对象 obj 则返回 负整数;
      ③ 如果当前对象 this 等于 形参对象 obj 则返回零 。

    2. 实现 Comparable接口的对象列表(和数组)可以通过 Collections.sortArrays.sort 进行自动排序。

    实现此接口的对象可以用作有序映射中的键或有序集合中的集合无需指定比较器

Comparator :定制排序(找第三方实现)

  • 实现过程

    1. 定义一个比较器对象;

    2. 重写 compare(Object o1,Object o2) 方法,比较 o1o2 的大小:
      ① 如果方法返回正整数,则表示 o1 大于 o2
      ② 如果方法返回 0 ,表示相等;
      ③ 如果方法返回负整数,表示 o1 小于 o2

    3. 可以 将 Comparator 传递给 sort 方法(如 Collections.sortArrays.sort),从而允许在排序顺序上实现精确控制 。

两者之间的差别

  1. Comparable :它是一个排序接口,只包含一个函数 compareTo()。 一个类实现了 Comparable 接口,就意味着 “该类本身支持排序”,它可以直接通过 Arrays.sort()Collections.sort() 进行排序。

  2. Comparator : 它是一个比较器接口,包括两个函数:compare()equals()。 一个类实现了Comparator 接口,那么它就是一个“比较器”。其它的类,可以根据 该比较器 去排序。

  3. 综上所述:Comparable内部比较器,而 Comparator外部比较器。一个类本身实现了Comparable 比较器,就意味着它本身支持排序;若它本身没实现 Comparable,也可以通过外部比较器 Comparator 进行排序。

注意:

当定制排序和自然排序同时存在时,最终的排序结果是按照定制排序进行排序的。

Comparable 和 Comparator 比较器相关推荐

  1. Java核心API -- 7(Iterator迭代器、Comparable、Comparator比较器)

    1. Iterator迭代器 所有Collection的实现类都实现了iterator方法,该方法返回一个Iterator接口类型的对象,用于实现对集合元素迭代的便利.在java.util包下. 1) ...

  2. 比较器(Comparable与Comparator接口)

    有错之处,希望大家可以指出来,谢谢. 文章目录 概念 Comparable接口 Comparable接口实现注意:接口的实现位置要在类所在的位置,比如此类是Worker类那么Comparable接口要 ...

  3. 比较器——Comparable与Comparator的使用

    目录 1.Comparable 2.Comparator比较器 1.Comparable 当我们要比较对象大小,或者是对对象进行排序时,我们就可以使用接口COmparable,重写该接口中的compa ...

  4. JAVA语言-比较器Comparator(java中Comparable和Comparator的区别)

    文章目录 一.什么是Comparator 二.Java compare方法和compareTo方法 三.java中Comparable和Comparator的区别 Comparator的例子 三.de ...

  5. Java 中 Comparable 和 Comparator 比较

    为什么80%的码农都做不了架构师?>>>    本文,先介绍Comparable 和Comparator两个接口,以及它们的差异:接着,通过示例,对它们的使用方法进行说明. Comp ...

  6. java8 lambda 排序算法,Java8中排序算法比较器的三种写法(使用lambda表达式实现Comparator比较器)...

    在涉及到数组, 集合等这些地方经常会需要用到排序算法, 在Java中的Collections类中有sort方法, 除了需要传入一个Comparator比较器, 或者需要排序的类实现了Comparabl ...

  7. Java中Comparable和Comparator区别小结

    阅读目录 一.Comparable简介 二.Comparator简介 三.Comparable和Comparator区别比较 回到顶部 一.Comparable简介 Comparable是排序接口.若 ...

  8. comparable和comparator比较

      今天在翻阅TreeMap的源码,发现其键必须是实现Comparable或者Comparator的接口时产生了一些兴趣,比如在TreeMap中的put方法分别对Comparable和Comparat ...

  9. Java中Comparable与Comparator的区别

    一.概述 Comparable和Comparator都是用来实现集合中元素的比较.排序的. Comparable是在集合内部定义的方法实现的排序,位于java.util下. Comparator是在集 ...

最新文章

  1. src源代码生成html格式文档
  2. Android 线程死锁的案例
  3. 插值搜索——本质和二分无异,是利用数据分布的规律来定查找点,其基本假设是数据分布均匀...
  4. 一个用于 Entity Framework 对象拷贝的方法
  5. LR 场景选项配置--笔记
  6. 计算机基础知识预备知识,计算机预备知识详解.ppt
  7. spark中累加器的使用(转)
  8. 递归函数基例和链条_链条和叉子
  9. 《Python Cookbook 3rd》笔记(2.2):字符串开头或结尾匹配
  10. js父元素获取子元素img_css,前端_父标签div中包含一个子元素img标签,子元素div标签,为什么img要加上浮动,子元素div才会处于正常位置?,css,前端 - phpStudy...
  11. 我看中国软件---规模篇
  12. 条件变量、pthread_cond_init
  13. 关于.Net Application Server对象访问方式的设计(2.上)
  14. android imageview 等比例放大缩小,imageView的使用(进行原样的保持和按照比例的缩放:)...
  15. ffdshow神奇的功能:视频播放时显示运动矢量和QP
  16. mysql复制以及一主多从等常见集群概述
  17. python:画混淆矩阵
  18. go语言如何使用指针?
  19. Faster-RCNN简易复现
  20. 你的格局决定你的结局

热门文章

  1. 山东理工大学ACM平台题答案关于C语言 2098 识别浮点常量问题
  2. 微信小程序图片前端压缩(canvas)
  3. Linux cp命令的使用方法与参数含义
  4. 读取身份证信息系统的程序编写
  5. JS实现简单的网页文本转语音阅读
  6. Mac平台配置OpenGL(glut,glew)
  7. android友盟错误日志,友盟崩溃日志分析三种方式
  8. k-means算法及改进
  9. 微型计算机的体积虽小 但是性价比比较高,[问答题,简答题] 简述公共管理与企业管理的区别。...
  10. 【CRR-FMM】A Concise Review of Recent Few-shot Meta-learning Methods