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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

求大神指导啊?TreeSet和TreeMap是如何实现自然排序的呢?

3 个回复

正序浏览
自然排序或者比较器排序。
回复 使用道具 举报
是因为他们储存的元素必须具备比较性.如果是你使用的对象是想String这种java定义的类,那么他就已经自己实现
了Comparable接口了,就已经按照了元素的自然顺序进行排序的了.如果是你自定义的类,如学生类.那么你要把这个
类存储到TreeSet,或者是作为键存储到TreeMap中去的时候,你就需要让这个学生类自己实现Comparable接口,让
这个学生具备比较性.实现这个接口,重写里面的compareTo()方法.然后就在方法中定义你想要按照什么排序,年龄,
姓名还是姓名的长度都是可以的.或者是你在建立集合对象的时候,使用带参构造.然后传入比较器.也就是实现了
Comparator接口的子类对象.你在这个子类对象中重写了compare()方法.在里面也是定义你想要按照什么比较
这就是为什么Tree类型的集合可以排序了.因为元素具备比较性,然后你存进去之后就会调用方法,返回的值是int类型的,然后就会按照>0在树的右边,小于0在数的左边,=0就是同一个元素.然后就会干掉之前那个位置上的元素,自己
替代,也就是没变.还是保证了Set集合的唯一性.同时也排了序
回复 使用道具 举报
TreeMap采用一种称为红黑树的二叉排序树来实现排序的,而TreeSet底层使用TreeMap实现的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马