此接口对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的compareTo方法被称为它的自然比较方法。
实现此接口的对象列表(和数组)可以通过Collections.sort或者Arrays.sort进行自动排序,这个两个排序实现使用的时快速排序。实现此接口的对象可以用作有序映射(SortedMap<T,V>)中的键或者(SortedSet<T>)中的元素,无需指定比较器。
建议最好使自然排序与equals结果一致。这是因为在使用自然排序与equals不一致时,没有显示比较器的有序集合行为“怪异”,尤其是这样的有序集合违背了根据euqlas方法定义的集合(或者映射表)的常规协定。
java.math.BigDecimal是个例外,自然排序排序值相等,当精确值不等的BigDecimal被视为相等。
一旦数实现了Comparable接口,你就可以跟许多泛型算法以及依赖域该接口的集合实现进行协助。你付出很小的努力就可以获得非常强大的功能。事实上,Java平台类库中的所有值类都实现了Comparable接口。如果你正在编写一个值类,它具有非常明显的内在排序,比如按字母排序、按数字排序或者按照年代排序,那你就坚决考虑实现该接口。
如果一个类有很多关键域,那么按照什么样的顺序来比较这些域非常重要。你必须从最关键的域开始,逐步进行比较,一次带最次要的域。一电话号码为例子。PhoneNumber类的comparaTo方法来作为实例说明:
public class PhoneNumber implements Comparable<PhoneNumber> {
int areaCode;// 区号
int prefix;// 前缀
int lineNumber;// 市号
@Override
public int compareTo(PhoneNumber o) {
// 优先比较区号
int areaCodeDiff = areaCode - o.areaCode;
if (areaCodeDiff != 0) {
return areaCodeDiff;
}
// 跟着比较前缀
int prefixDiff = prefix - o.prefix;
if (prefixDiff != 0) {
return prefixDiff;
}
// 最低优先级比较市号
return lineNumber - o.lineNumber;
}
}
分享到:
相关推荐
1.什么是Comparable接口 此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort ...
主要介绍了java 实现Comparable接口排序,升序、降序、倒叙,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
java通过Comparable接口实现字符串比较大小排序的简单实例
通过简单的例子初步了解Comparable和Comparator的使用,注释很详细
下面小编就为大家带来一篇java中实现Comparable接口实现自定义排序的示例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
【IT十八掌徐培成】Java基础第12天-02.TreeSet实现与Comparable接口.zip
文章目录简介ComparableComparator举个例子 java中Comparable和Comparator的区别 ...实际上Comparable接口只定义了一个方法: public int compareTo(T o); 实现这个接口的类都需要实现compareTo方法,表示两个
实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。 此外,实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指定比较器。 此 接口只有一个方法...
当且仅当要使用的对象实现Comparable接口时,我们也可以创建不带Comparator对象的SortedList。 用法 我们将像创建Java中的任何ArrayList一样创建SortedList: SortedList sortedlist = new SortedList(comparator); ...
1.10 Java中Comparable和Comparator实现对象比较 1.11 Java中的JNDI (Java命名与目录接口) 1.12 Java事件处理机制与“恋爱关系” 1.13 Java代码优化编程 1.14 Java数组浅析 。。。。。。
若我们想调用Arrays.sort方法对一个People对象数组进行比较,那么People对象必须是”可比较的”,即People类需要实现Comparable接口。接口的实现类需要实现接口中定义的方法。也是说,接口描述了一组需求,而实现一...
北京市自学考试java上机实践考题总结,包含了常考的各种题型
实现Comparable接口或Comparator接口,用户可以根据需要对集合中的元素进行排序。为了方便用户使用,Java平台还提供了Collections和Arrays工具类。collection.rar分别对上述内容进行详细讲解演示。
031113_【第11章:Java常用类库】_比较器(Comparable、Comparator)笔记.pdf 031114_【第11章:Java常用类库】_观察者设计模式笔记.pdf 031115_【第11章:Java常用类库】_正则表达式笔记.pdf 031116_【第11章:Java...
用Java的Comparable接口与Comparator接口分别实现类的比较排序~~
最近正在学习Java,也买了很多的有关Java方面的书籍,其中发现《跟我学Java》这本书,都的很不错啊,所以顺便拿电脑把这本书的目录敲了下来,与大家分享。尤其是那些和我一样初学Java的朋友们,看看哪一节对你有用,...
接口回调 用哥德巴赫猜想来总结,哥德巴赫猜想就是要去输入一个偶数,输出这个偶数能被分解为哪两个质数的和,具体实现...接口起到了两个作用,一是隔离,使用者和实现者中间有了接口来作为隔离,不必串行完成,可以并
在Java中只要实现Comparable接口就可以了.但是在Lucene中要实现SortComparatorSource接口和ScoreDocComparator接口.在了解具体实现方法之前先来看看这两个接口的定义吧. SortComparatorSource接口的功能是返回一个...
编写一个Java项目,包含两个类StudentJavaScore和...StudentJavaScore用于存储学生姓名和Java成绩,并实现了Comparable接口.ScoreOperation类包含5个方法,对学生成绩进行查询、排序,并实现字符串中字符计数操作。
Comparable接口 141 equals和hashcode方法 143 泛型 144 思考作业 145 上机作业 145 第八章 IO技术 146 为什么需要学习IO技术 146 基本概念 146 数据源 146 流的概念 146 第一个简单的IO流程序及深入(将文件中的...