A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李节起 中级黑马   /  2012-4-12 14:55  /  1904 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Student implements Comparable<Student>——————为什么要实现Comparable接口?
API————此接口强行对实现它的每个类的对象进行整体排序

4 个回复

倒序浏览
Student类是自定义的,创建的对象之间没有相互比较的方法,实现了Comparable接口,覆写compareTo()方法,就可以在方法内定义Student类对象之间比较的规则;
此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。
像集合TreeSet它有自然排序的功能,排序的比较就是通过compareTo方法来实现的

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
因为如果你用TreeSet()集合储存对象的话,集合会自动为你的对象排序,
而默认的自然排序排序是针对字符串对象的,所以你自定义的类没有比较性,实现了
Comparable后就可以覆写compareto()方法,来为你的对象建立比较性,这样就能
用TreeSet()集合储存了!
回复 使用道具 举报
这是TreeSet()集合的一种策略模式,因为它本身是一个有序的集合的定义,在集合初始化时需要调用者告诉它以一种什么样的顺序去存储元素,而这个顺序需要调用者去实现。
通过API文档我们可以明白public interface Comparable<T>此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。
所以TreeSet()集合强行让调用者出入一个实现Comparable接口的的参数,而调用者会根据自己的需求排序,要实现Comparable功能必须要覆盖compareto()方法。
回复 使用道具 举报
一个类实现了Comparable接口,则说明它的实例具有内在的排序关系,就可以跟多种泛型算法以及依赖于该接口的集合实现进行协作。依赖于比较关系的类包括有序集合类TreeSet和TreeMap,以及工具类Collections和Arrays.若一个数组中的元素实现了Comparable接口,则可以直接使用Arrays类的sort方法对这个数组进行排序。Java平台库中的所有值类(value classes)都实现了Comparable接口。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马