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