JAVA中TreeSet集合中的比较器 比较方式

    技术2026-06-17  7

    JAVA中TreeSet集合中的比较器 比较方式

    定义一个乌龟类: class WuGui{ int age; public WuGui(int age) { this.age = age; } public String toString(){ return ("小乌龟的年龄:" + this.age); } } 编写一个乌龟比较器: //单独在这里写一个比较器类 //比较器需要实现java.util.Comparator接口。(Comparable接口是在java.lang包下的) 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构造器一个比较器对象 // TreeSet<WuGui> ts = new TreeSet<>(new WuGuiComparator()); //还可以通过编写匿名内部类的方式创建比较器: 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接口
    Processed: 0.008, SQL: 9