比较器Comparator 和 Comparable的简单区别
来源:互联网 发布:终极算法 pdf 百度云 编辑:程序博客网 时间:2024/06/09 19:06
1,简介
最近在刷题的时候需要用到对自定义的类进行排序,于是想到了实现比较器接口,发现有comparator和conparable两个比较器接口,具体分析一下两者的区别。
例如现在有一个自定义的类,
class Score{ public int score; public int time; public int getScore() {return score;}public void setScore(int score) {this.score = score;}public int getTime() {return time;}public void setTime(int time) {this.time = time;}public Score(int score, int time) {super();this.score = score;this.time = time;}}如果对一个对象数组进行排序
Score[] score=new Score[n];Arrays.sort(score);这样是没法实现的,而对基本的数据类型可以这样排序是因为其都实现了Comparable<T>接口
例如
public final class Integer extends Number implements <strong>Comparable<Integer></strong> {public final class String implements java.io.Serializable, <strong>Comparable<String></strong>, CharSequence {所以这里的Score对象必须先实现自己的比较器才能用上述类似的方式进行排序
2,比较
(1).Comparator 和 Comparable都是java中的内部比较器接口,都是用来实现对一个自定义的类进行排序
(2). 不同的是实现Comparable接口是定义在类的内部,比较代码需要嵌入类的内部结构中
Comparator 实现在类的外部,单独实现第一个比较器,不需要对原来的类进行结构上的变化,属于无侵入式的。
具体到上面的例子
Comparable<T>内部侵入式实现比较器
class Score implements Comparable<Score>{ public int score; public int time; public int getScore() {return score;}public void setScore(int score) {this.score = score;}public int getTime() {return time;}public void setTime(int time) {this.time = time;}@Overridepublic int compareTo(Score o) {if(this.time>o.time) return 1;else if(this.time==o.time) return 0;else return -1;}public Score(int score, int time) {super();this.score = score;this.time = time;}}然后在主类中直接比较 Arrays.sort(score);
Comparator <T>无侵入式实现比较器,只需要单独写一个比较器实现类ScoreComparator
class ScoreComparator implements Comparator<Score>{@Overridepublic int compare(Score o1, Score o2) {if(o1.time>o2.time) return 1;else if(o1.time==o2.time) return 0;else return -1;}}然后在主类中带入比较器类Arrays.sort(score, new ScoreComparator());
0 0
- 比较器Comparator 和 Comparable的简单区别
- 比较器Comparator 和 Comparable的简单区别
- 比较器comparable和comparator的区别
- Comparable和Comparator的比较
- Comparable和Comparator的比较
- 比较器Comparable和Comparator
- 比较器:Comparable和Comparator
- java 中Comparator和Comparable的区别和比较
- Comparator和Comparable的区别
- Comparable和 Comparator的区别
- Comparator和Comparable的区别
- comparable和comparator的区别
- Comparable和Comparator的区别
- Comparator 和 Comparable 的区别
- comparable和comparator的区别
- Comparable和Comparator的区别
- Comparable和Comparator的区别
- Comparable和Comparator的区别
- ijkplayer整理笔记(三)——AVFormatContext类图详解类图详解
- 写论文需要注意的点
- HDU 5651 xiaoxin juju needs help 逆元&组合数学
- 【linux】修改纯终端下键盘映射
- Jenkins——应用篇——插件使用——Deploy to container Plugin
- 比较器Comparator 和 Comparable的简单区别
- Binary XML file line #8: Error inflating class android.support.design.widget.NavigationView
- red5搭建流媒体直播系统
- Android NDK R9
- 查询功能:动态的添加列名和条件
- dom4j 遍历所有元素和属性
- 今天开始学模式识别与机器学习Pattern Recognition and Machine Learning (PRML),章节1.2,Probability Theory (下)
- 判断元素是否绑定了事件
- Jsp跳出frame框架