Comparable 和 Comparator 比较器
Comparable :自然排序(自己单独实现)
自然排序的定义
Comparable
接口强行对实现它的每个类的对象进行整体排序实现过程
实现
Comparable
接口的类必须实现compareTo(Object obj)
方法,两个对象通过compareTo
方法的返回值来比较大小 :
① 如果当前对象this
大于形参对象obj
则返回正整数;
② 如果当前对象this
小于 形参对象obj
则返回 负整数;
③ 如果当前对象this
等于 形参对象obj
则返回零 。实现
Comparable
接口的对象列表(和数组)可以通过Collections.sort
或Arrays.sort
进行自动排序。
实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指定比较器
Comparator :定制排序(找第三方实现)
实现过程
定义一个比较器对象;
重写
compare(Object o1,Object o2)
方法,比较o1
和o2
的大小:
① 如果方法返回正整数,则表示o1
大于o2
;
② 如果方法返回 0 ,表示相等;
③ 如果方法返回负整数,表示o1
小于o2
。可以 将
Comparator
传递给sort
方法(如Collections.sort
或Arrays.sort
),从而允许在排序顺序上实现精确控制 。
两者之间的差别
Comparable
:它是一个排序接口,只包含一个函数compareTo()
。 一个类实现了Comparable
接口,就意味着 “该类本身支持排序”,它可以直接通过Arrays.sort()
或Collections.sort()
进行排序。Comparator
: 它是一个比较器接口,包括两个函数:compare()
和equals()
。 一个类实现了Comparator
接口,那么它就是一个“比较器”。其它的类,可以根据 该比较器 去排序。综上所述:
Comparable
是内部比较器,而Comparator
是外部比较器。一个类本身实现了Comparable
比较器,就意味着它本身支持排序;若它本身没实现Comparable
,也可以通过外部比较器Comparator
进行排序。
注意:
当定制排序和自然排序同时存在时,最终的排序结果是按照定制排序进行排序的。
Comparable 和 Comparator 比较器相关推荐
- Java核心API -- 7(Iterator迭代器、Comparable、Comparator比较器)
1. Iterator迭代器 所有Collection的实现类都实现了iterator方法,该方法返回一个Iterator接口类型的对象,用于实现对集合元素迭代的便利.在java.util包下. 1) ...
- 比较器(Comparable与Comparator接口)
有错之处,希望大家可以指出来,谢谢. 文章目录 概念 Comparable接口 Comparable接口实现注意:接口的实现位置要在类所在的位置,比如此类是Worker类那么Comparable接口要 ...
- 比较器——Comparable与Comparator的使用
目录 1.Comparable 2.Comparator比较器 1.Comparable 当我们要比较对象大小,或者是对对象进行排序时,我们就可以使用接口COmparable,重写该接口中的compa ...
- JAVA语言-比较器Comparator(java中Comparable和Comparator的区别)
文章目录 一.什么是Comparator 二.Java compare方法和compareTo方法 三.java中Comparable和Comparator的区别 Comparator的例子 三.de ...
- Java 中 Comparable 和 Comparator 比较
为什么80%的码农都做不了架构师?>>> 本文,先介绍Comparable 和Comparator两个接口,以及它们的差异:接着,通过示例,对它们的使用方法进行说明. Comp ...
- java8 lambda 排序算法,Java8中排序算法比较器的三种写法(使用lambda表达式实现Comparator比较器)...
在涉及到数组, 集合等这些地方经常会需要用到排序算法, 在Java中的Collections类中有sort方法, 除了需要传入一个Comparator比较器, 或者需要排序的类实现了Comparabl ...
- Java中Comparable和Comparator区别小结
阅读目录 一.Comparable简介 二.Comparator简介 三.Comparable和Comparator区别比较 回到顶部 一.Comparable简介 Comparable是排序接口.若 ...
- comparable和comparator比较
今天在翻阅TreeMap的源码,发现其键必须是实现Comparable或者Comparator的接口时产生了一些兴趣,比如在TreeMap中的put方法分别对Comparable和Comparat ...
- Java中Comparable与Comparator的区别
一.概述 Comparable和Comparator都是用来实现集合中元素的比较.排序的. Comparable是在集合内部定义的方法实现的排序,位于java.util下. Comparator是在集 ...
最新文章
- src源代码生成html格式文档
- Android 线程死锁的案例
- 插值搜索——本质和二分无异,是利用数据分布的规律来定查找点,其基本假设是数据分布均匀...
- 一个用于 Entity Framework 对象拷贝的方法
- LR 场景选项配置--笔记
- 计算机基础知识预备知识,计算机预备知识详解.ppt
- spark中累加器的使用(转)
- 递归函数基例和链条_链条和叉子
- 《Python Cookbook 3rd》笔记(2.2):字符串开头或结尾匹配
- js父元素获取子元素img_css,前端_父标签div中包含一个子元素img标签,子元素div标签,为什么img要加上浮动,子元素div才会处于正常位置?,css,前端 - phpStudy...
- 我看中国软件---规模篇
- 条件变量、pthread_cond_init
- 关于.Net Application Server对象访问方式的设计(2.上)
- android imageview 等比例放大缩小,imageView的使用(进行原样的保持和按照比例的缩放:)...
- ffdshow神奇的功能:视频播放时显示运动矢量和QP
- mysql复制以及一主多从等常见集群概述
- python:画混淆矩阵
- go语言如何使用指针?
- Faster-RCNN简易复现
- 你的格局决定你的结局
热门文章
- 山东理工大学ACM平台题答案关于C语言 2098 识别浮点常量问题
- 微信小程序图片前端压缩(canvas)
- Linux cp命令的使用方法与参数含义
- 读取身份证信息系统的程序编写
- JS实现简单的网页文本转语音阅读
- Mac平台配置OpenGL(glut,glew)
- android友盟错误日志,友盟崩溃日志分析三种方式
- k-means算法及改进
- 微型计算机的体积虽小 但是性价比比较高,[问答题,简答题] 简述公共管理与企业管理的区别。...
- 【CRR-FMM】A Concise Review of Recent Few-shot Meta-learning Methods