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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jiangkaizhuo 中级黑马   /  2016-4-10 23:58  /  278 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

TreeSet存储元素对元素进行排序的源码解析:
                        TreeSet在存储元素的时候 会首先去判断是否有比较器存在(也就是判断比较器是否为null)
                                如果存在:
                                        就会让比较器去调用compare(T t1, T t2)方法,去依次比较即将存入的值和已经存入TreeSet集合的值
                                                如果返回正数:往二叉树右侧放
                                                如果返回负数:往二叉树左侧放
                                                如果返回 0 :不添加
                               
                                如果不存在:底层就会把即将存入的元素 自动提升为Comparable类型的对象(所以如果没有比较器的情况下,
                                        元素所在的类没有实现Comparable接口,在做自动提升类型的时候就会报类型转换错误),
                                        并让该对象调用CompareTo(T t)方法,和已经存入TreeSet集合的元素依次比较
                                                如果返回正数:往二叉树右侧放
                                                如果返回负数:往二叉树左侧放
                                                如果返回 0 :不添加

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马