1、简介
TreeSet类扩展了 AbstractSet和implements NavigableSet接口。它与 HashSet 类非常相似,不同之处在于它按排序顺序存储元素。其底层实现为红黑树。
2、结构
3、特性
它扩展AbstractSet了扩展类的AbstractCollection类。
它实现NavigableSet了扩展接口的SortedSet接口。
不允许重复值。
不允许null值。
有序集合。
不允许插入异构对象。
非线程安全。
4、案例
//自动排序
TreeSet
treeSet.add(20);
treeSet.add(18);
treeSet.add(17);
treeSet.add(21);
System.out.println(treeSet);
TreeSet
treeSet2.add("a");
treeSet2.add("c");
treeSet2.add("b");
treeSet2.add("ab");
System.out.println(treeSet2);
TreeSettreeSet=new TreeSet (); //按照年龄排序(自定义排序的规则) treeSet.add(new Person("aa", 20)); treeSet.add(new Person("bb", 18)); treeSet.add(new Person("cc", 17)); treeSet.add(new Person("dd", 21)); System.out.println(treeSet);
TreeSettreeSet=new TreeSet (); treeSet.add(20); treeSet.add(18); treeSet.add(30); treeSet.add(25); System.out.println(treeSet); System.out.println(treeSet.first()); //返回第一个(最小) System.out.println(treeSet.last()); //返回最后一个(最大); System.out.println(treeSet.floor(24));// <=指定元素的最大的元素 System.out.println(treeSet.lower(25)); // <指定元素的最大的元素 System.out.println(treeSet.ceiling(25));// >=指定元素的最小的元素 System.out.println(treeSet.higher(18)); // >指定元素的最小的元素 System.out.println(treeSet.pollFirst()); //获得第一个元素 并且将其从集合中删除 System.out.println(treeSet); System.out.println(treeSet.pollLast()); //获得最后一个元素 并且将其从集合中删除 treeSet.add(21); treeSet.add(24); System.out.println(treeSet); //返回的是>=20&& <24的所有集合元素 SortedSet set= treeSet.subSet(20, 24); for(Integer integer:set) System.out.println(integer); //返回的是>=21的所有集合元素 SortedSet set2= treeSet.tailSet(21); for(Integer integer:set2) System.out.println(integer); System.out.println(treeSet);



