黑马程序员技术交流社区

标题: TreeSet和TreeMap是如何实现自然排序的? [打印本页]

作者: MoonsenHung    时间: 2015-8-20 10:45
标题: TreeSet和TreeMap是如何实现自然排序的?
求大神指导啊?TreeSet和TreeMap是如何实现自然排序的呢?
作者: zhao1991    时间: 2015-8-20 10:51
TreeMap采用一种称为红黑树的二叉排序树来实现排序的,而TreeSet底层使用TreeMap实现的
作者: mmppp    时间: 2015-8-20 17:26
是因为他们储存的元素必须具备比较性.如果是你使用的对象是想String这种java定义的类,那么他就已经自己实现
了Comparable接口了,就已经按照了元素的自然顺序进行排序的了.如果是你自定义的类,如学生类.那么你要把这个
类存储到TreeSet,或者是作为键存储到TreeMap中去的时候,你就需要让这个学生类自己实现Comparable接口,让
这个学生具备比较性.实现这个接口,重写里面的compareTo()方法.然后就在方法中定义你想要按照什么排序,年龄,
姓名还是姓名的长度都是可以的.或者是你在建立集合对象的时候,使用带参构造.然后传入比较器.也就是实现了
Comparator接口的子类对象.你在这个子类对象中重写了compare()方法.在里面也是定义你想要按照什么比较
这就是为什么Tree类型的集合可以排序了.因为元素具备比较性,然后你存进去之后就会调用方法,返回的值是int类型的,然后就会按照>0在树的右边,小于0在数的左边,=0就是同一个元素.然后就会干掉之前那个位置上的元素,自己
替代,也就是没变.还是保证了Set集合的唯一性.同时也排了序
作者: 史柯    时间: 2015-8-20 19:31
自然排序或者比较器排序。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2