Object内部方法及通用接口方法解析

1. 比较器

两种方式实现比较器:

a:实现Comparable<T>接口
b:实现Comparator<T>接口

public class CompareTest {

    @Test
    public void testCompare() {
        Student a = new Student(1, "b");
        Student b = new Student(2, "c");
        Student c = new Student(2, "a");
        List<Student> list = new ArrayList<>();

        list.add(a);
        list.add(b);
        list.add(c);

        //第一张方法排序
        Collections.sort(list);
        //第二种方法排序
        Compare compare = new Compare();
        Collections.sort(list, compare);

        System.out.println(new Gson().toJson(list));

    }

    private class Student implements Comparable<Student> {
        int code;
        String name;

        public Student(int code, String name) {
            this.code = code;
            this.name = name;
        }

        @Override
        public int compareTo(Student o) {
            if (this.code != o.code)
                return this.code - o.code;
            return o.name.compareTo(this.name);
        }
    }

    private class Compare implements Comparator<Student> {

        @Override
        public int compare(Student s1, Student s2) {
            if (s1.code != s2.code)
                return s1.code - s2.code;
            return s1.name.compareTo(s2.name);
        }
    }
}

遵守以下限制条件:自反性、对称性、传递性
注:强烈建议  ( x.compareTo(y) == 0 ) == ( x.equal(y) )




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值