HashSet回顾
基于hashcode计算元素存放位置。 当存入元素的哈希码相同时,会调用equals进行确认,如果为true,则拒绝后者存入。
TreeSet(红黑树)
基于排列 顺序实现,元素不重复 实现了SortedSet接口,对集合元素自动排序。 元素对象的类型必须实现Comparable接口,指定排序规则。 通过 CompareTo方法去确定是否为 重复元素。
红黑树
二叉查找树
TreeSet的使用
存储结构是红黑树。 第二个xyz是不可以加进来的。
现在如果 要加数据,那么怎么进行比较呢 ,就是如果转成coomparable,就是说如果要 把person加入到treeset中,必须实现comparable接口。 这个接口是泛型的,所以这个T改为Person即可。 实现接口,所以 必须 实现 接口 里面的抽象方法! comparable里面只有 一个方法,也就是compareTo方法。
先按照姓名来比较,然后再按照年龄进行比较。
当compareTo方法的返回值为0,认为是重复元素,不能添加进来。
Comparator比较器的使用:定制比较
那么就是不需要实现comparable接口了。 这里使用匿名内部类 的实现 来进行实现。
TreeSet使用案例
使用TreeSet集合实现字符串按照长度进行排序。 注意,是先比较长度,如果长度一样,就比较n2用他们自己的方法compareTo。
|