本帖最后由 摄影勾魂 于 2013-11-22 14:14 编辑
做练习的时候,无意间发现存在这么一个问题,连Integer源码中的compareTo()也查看了,怎么也找不到原因。无奈呀,就赶紧来论坛问问,坐等半小时,有20多个人浏览就是没人回答,着急啊。只知道TreeSet是用二叉树排序的方法对集合中元素排序的,怎么就跟我想的不一样呢,我就自己编了两个类,实现Comparable接口,重写compareTo(),使TreeSet元素在调用compareTo()的时候能看到是和哪个已存在的元素在进行比较,是按什么顺序比较的……,结果出来一看,还真和我以为的二叉树排序不一样,在比较的时候有些已存在的元素会被跳过(在创建这种二叉树的过程中会自行调整树的结构)。这下问题就简单了,我就搜了下TreeSet的排序,就找到红黑树查找法了。以前看书的时候都没太注意这方面的细节,红黑树是高级数据结构的内容,一般的介绍数据结构书籍会略过或者作为选学。还是自己看的书少,知识面太窄;再一个就是不够细心。今后还得再努力才是啊! |