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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Comparable   和  Comparator 接口的区别是什么啊? 一直很糊涂

5 个回复

倒序浏览
你要让对象具有比较性,比如你自定义Person具有比较性,那就实现Comparable。
如果你的对象没有比较性,那就自定义一个比较器(也是自定义类)去实现Comparator。
回复 使用道具 举报
TreeSet:可以对set集合中的元素进行排序。
                           底层数据结构是二叉树。
                           保证元素唯一性的依据。
                           compareTo方法返回零(return 0)。

                           TreeSet排序的第一种方式:让元素自身具备比较性。
                           元素需要实现Comparable接口,覆盖compareTo方法。
                           这种方式也称为元素的自然顺序,或者叫默认顺序。

                           TreeSet的第二种排序方式。
                           当元素自身不具备比较性时,或者具备的比较性不是所需要的。
                           这时就需要让集合自身具备比较性,需要传入一个实现了comparator接口的比较器。
                           在集合初始化时,就有了比较方式。
回复 使用道具 举报
定义的类实现Comparable,复写compareTo方法后,该类就具有了比较性,在使用二叉树结构的集合时,才能够排序!而当类自身的比较方式不适用,我们需要建立新的比较器,用Comparator来实现,复写compare方法,主要就是这样。
回复 使用道具 举报
comparable自然排序,貌似是根据哈希值来进行自然排序,comparator是自定义排序,实现该接口可以自定义一个比较器。
回复 使用道具 举报
throw 和 throws的区别
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马