比较器Comparator与Comparable是排序接口

Comparator是一个接口,它包含两种方法

   int compare(T o1, T o2);
    boolean equals(Object obj);

一个类要实现Comparator接口,可以只实现compare函数,因为任何类,默认都是已经实现了equals(Object obj)的。

    public boolean equals(Object obj) {
        return (this == obj);
    }

创建对象调用compara函数

public class practice1 implements Comparator {
    private String name;
    private int age;

    public practice1 () {

    }

    public String getName () {
        return name;
    }

    public void setName ( String name ) {
        this.name = name;
    }

    public int getAge () {
        return age;
    }

    public void setAge ( int age ) {
        this.age = age;
    }


    public practice1 ( String name, int age ) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString () {
        return "practice1{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public int compare ( Object o1, Object o2 ) {
        practice1 s1 = (practice1) o1;
        practice1 s2 = (practice1) o2;
        //先比较姓名。
        int temp = s1.getName().compareTo(s2.getName());
        //如果姓名相同,再比较年龄。
        return temp == 0 ? s1.getAge() - s2.getAge() : temp;
    }
}

进行储存

public class demo02 {
    public static void main ( String[] args ) {
        Set set = new TreeSet(new practice1());
        /*
         *
         */
        set.add(new practice1("张三",22));
        set.add(new  practice1("王五",21));
        set.add(new  practice1("刘三",20));
        set.add(new practice1("李四",24));


        for (Iterator it = set.iterator(); it.hasNext();) { //打印出每一个元素
            System.out.println(it.next());
        }
    }
}

输出结果

practice1{name='刘三', age=20}
practice1{name='张三', age=22}
practice1{name='李四', age=24}
practice1{name='王五', age=21}

Comparator 和 Comparable 比较:
1.Comparable是排序接口;若一个类实现了Comparable接口,就意味着“该类支持排序”。
(作用在实体类上)
2.而Comparator是比较器;我们若需要控制某个类的次序,可以建立一个“该类的比较器”来进行排序。
(作用在排序类上)
总结:Comparable相当于“内部比较器”,而Comparator相当于“外部比较器”。

内部比较器:简洁,简单

外部比较器:同时定义多个实体类的比较规则,也可以定义多个比较器,从不同的维度比较某个实体类。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值