一、了解
- TreeSet集合底层实际上是一个TreeMap
- TreeMap集合底层是一个二叉树
- 放到TreeSet集合中的元素,等同于放到TreeMap集合key部分了
- TreeSet集合中的元素:无序不可重复,但是可以按照元素的大小顺序自动排序
二、怎么选择

三、自定义类型在TreeSet中的比较
1、第一种方式(放在集合中的元素实现java.lang.Comparable接口)
package Map.javase;import java.util.TreeSet;public class TreeSetTest05 {public static void main(String[] args) {TreeSet<Vip> vips = new TreeSet<>();vips.add(new Vip("zhangsan",13));vips.add(new Vip("lise",13));vips.add(new Vip("zhangwu",13));for (Vip vip :vips){System.out.println(vip);}}}class Vip implements Comparable<Vip>{String name;int age;public Vip(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Vip{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic int compareTo(Vip o) {if (o.age == this.age) {return this.name.compareTo(o.name);}else {return this.age - o.age;}}}
2、第二种方式(使用比较器)
package Map.javase;import java.util.Comparator;import java.util.TreeSet;public class TreeSetTest06 {public static void main(String[] args) {TreeSet<WuGui>wuGuis = new TreeSet<>(new WuGuiComparator());wuGuis.add(new WuGui(1000));wuGuis.add(new WuGui(200));wuGuis.add(new WuGui(10));for (WuGui wuGui : wuGuis){System.out.println(wuGui);}}}class WuGui{int age;public WuGui(int age) {this.age = age;}@Overridepublic String toString() {return "WuGui{" +"age=" + age +'}';}}/*** 编写一个比较器* 比较器实现java.util.Comparator接口。(Comparable是java.lang包下的,Comparator是java。util包下的)*/class WuGuiComparator implements Comparator<WuGui> {@Overridepublic int compare(WuGui o1,WuGui o2) {return o1.age - o2.age;}}
也可以使用匿名内部类的方式
package Map.javase;import java.util.Comparator;import java.util.TreeSet;public class TreeSetTest06 {public static void main(String[] args) {// TreeSet<WuGui>wuGuis = new TreeSet<>(new WuGuiComparator());TreeSet<WuGui>wuGuis = new TreeSet<>(new Comparator<WuGui>(){public int compare(WuGui o1 , WuGui o2){return o1.age - o2.age;}});wuGuis.add(new WuGui(1000));wuGuis.add(new WuGui(200));wuGuis.add(new WuGui(10));for (WuGui wuGui : wuGuis){System.out.println(wuGui);}}}class WuGui{int age;public WuGui(int age) {this.age = age;}@Overridepublic String toString() {return "WuGui{" +"age=" + age +'}';}}/*** 编写一个比较器* 比较器实现java.util.Comparator接口。(Comparable是java.lang包下的,Comparator是java。util包下的)*//*class WuGuiComparator implements Comparator<WuGui> {@Overridepublic int compare(WuGui o1,WuGui o2) {return o1.age - o2.age;}}*/
