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