package com.javase.collection.set.treeset;import java.util.TreeSet;/*** TreeSet集合中的元素可排序的第二种方式:使用比较器的方式。** 结论:放到TreeSet或者TreeMap集合key部分的元素要想做到排序,包括两种方式:* 第一种:放到集合中的元素实现java.lang.Comparable接口。* 第二种:在构造/创建TreeSet或者TreeMap集合的时候给它传一个比较器Comparator对象。* (可以创建一个比较器对象类,也可以使用匿名内部类)** Comparable和Comparator怎么选择呢?* 当比较规则不会发生改变的时候,或者说当比较规则只有一种的时候,建议实现Comparable接口。* 如果比较规则较多,并且多个比较规则之间需要频繁切换,建议使用Comparator接口。*/
public class TreeSetText04 {public static void main(String[] args) {
// TreeSet wuGuis = new TreeSet<>();//这样不行,没有通过构造方法传递一个比较器
// 创建集合 给构造方法传一个比较器TreeSet wuGuis = new TreeSet<>(new WuGuiComparator());
// 也可以不写比较器类WuGuiComparator,使用匿名内部类直接new接口Comparator/*TreeSet w = new TreeSet<>(new Comparator() {@Overridepublic int compare(WuGui o1, WuGui o2) {return o1.getAge() - o2.getAge();}});*/
// 添加元素wuGuis.add(new WuGui(999));wuGuis.add(new WuGui(888));wuGuis.add(new WuGui(11111));wuGuis.add(new WuGui(666));wuGuis.add(new WuGui(55555));
// 遍历集合for (WuGui wuGui : wuGuis) {System.out.println(wuGui);}}
}
/*
输出结果:WuGui{age=666}WuGui{age=888}WuGui{age=999}WuGui{age=11111}WuGui{age=55555}*/
package com.javase.collection.set.treeset;/*** 乌龟类*/
public class WuGui {private int age;public WuGui() {}public WuGui(int age) {this.age = age;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "WuGui{" +"age=" + age +'}';}
}
package com.javase.collection.set.treeset;import java.util.Comparator;/*** 乌龟比较器类* 需要实现java.util.Comparator接口*/
public class WuGuiComparator implements Comparator {@Overridepublic int compare(WuGui o1, WuGui o2) {return o1.getAge() - o2.getAge();//正序排列,反过来写就是倒序排列即return o2.getAge() - o1.getAge();}
}