TreeSet的使用和底层实现
TreeSet底层实际是用TreeMap实现的,内部维持了一个简化版的TreeMap,通过key来存储Set的元素。 TreeSet内部需要对存储的元素进行排序,因此,我们对应的类需要实现Comparable接口。这样,才能根据compareTo()方法比较对象之间的大小,才能进行内部排序。
【示例】TreeSet和Comparable接口的使用
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
public class Test { public static void main(String[] args) { User u1 = new User(1001, "高淇", 18); User u2 = new User(2001, "高希希", 5); Set<User> set = new TreeSet<User>(); set.add(u1); set.add(u2); }}class User implements Comparable<User> { int id; String uname; int age; public User(int id, String uname, int age) { this.id = id; this.uname = uname; this.age = age; } /** * 返回0 表示 this == obj 返回正数表示 this > obj 返回负数表示 this < obj */ @Override public int compareTo(User o) { if (this.id > o.id) { return 1; } else if (this.id < o.id) { return -1; } else { return 0; } }} |
使用TreeSet要点:
(1) 由于是二叉树,需要对元素做内部排序。 如果要放入TreeSet中的类没有实现Comparable接口,则会抛出异常:java.lang.ClassCastException。
(2) TreeSet中不能放入null元素。

浙公网安备 33010602011771号