JAVA中TreeSet集合中的比较器 比较方式
定义一个乌龟类:
class WuGui{
int age;
public WuGui(int age) {
this.age = age;
}
public String toString(){
return ("小乌龟的年龄:" + this.age);
}
}
编写一个乌龟比较器:
class WuGuiComparator implements Comparator<WuGui> {
@Override
public int compare(WuGui o1, WuGui o2) {
return o1.age - o2.age;
}
}
对比较器进行测试:
public class TreeSetTest05 {
public static void main(String[] args) {
TreeSet<WuGui> ts = new TreeSet<>(new Comparator<WuGui>() {
@Override
public int compare(WuGui o1, WuGui o2) {
return o1.age - o2.age;
}
});
ts.add(new WuGui(888));
ts.add(new WuGui(666));
ts.add(new WuGui(999));
for (WuGui wuGui : ts){
System.out.println(wuGui);
}
}
}
小乌龟的年龄:666
小乌龟的年龄:888
小乌龟的年龄:999
综上: 放到TreeSet或者TreeMap集合key部分的元素要想做到排序,包括两种方式: 第一种:放在集合中的元素实现java.lang.Comparable接口 第二种:在构造TreeSet或者TreeMap集合的时候给它传一个比较器对象Comparable和Comparator怎么选择呢: 当比较规则不会发生改变的时候,或者说当比较规则只有一个的时候,建议使用Comparable接口 如果比较规则有多个,并且需要多个比较规则之间频繁切换,建议使用Comparator接口
转载请注明原文地址:https://ipadbbs.8miu.com/read-64845.html