java比较器

1.自然排序:实现Comparable接口

通过重写Comparable接口中的comparaTo(Object obj)的方法对类进行自定义排序。

public class User implements Comparable
    private String name;
    private int age;
//按照姓名从小到大排列,姓名相同按年龄排序
    @Override
    public int compareTo(Object o) {
        if(o instanceof User){
            User user = (User) o;
            int compare = this.name.compareTo(user.name);
            if(compare != 0){
                return compare;
            }else{
                return Integer.compare(this.age,user.age);
            }
        }else{
            throw new RuntimeException("输入类型不同");
        }
    }

2.定制排序:使用Comparator接口

当Comparable接口无法修改时且不满足暂时需求时使用Comparable接口重写Compara()方法进行临时排序。

主要使用在

Arrays.sort(T[] a,Comparator<? super T> c);

Collections.sort(List <T> list,Comparator<? super T> c);

new TreeSet(Comparator<? super E> comparator);

实例为Arrays.sort

@Test
public void Test2() {
    User[] arr11 = new User[3];
    arr11[0] = new User("111", 23);
    arr11[1] = new User("222", 14);
    arr11[2] = new User("111", 24);
    System.out.println(Arrays.toString(arr11));

    Comparator comparator = (Object o1, Object o2) -> {
        if (o1 instanceof User && o2 instanceof User) {
            User g1 = (User) o1;
            User g2 = (User) o2;
            if (g1.getName().equals(g2.getName())) {
                return Integer.compare(g1.getAge(), g2.getAge());
            } else
                return g1.getName().compareTo(g2.getName());
        }
        throw new RuntimeException("cuocuocuo");
    };

    Arrays.sort(arr11, comparator);

    System.out.println(Arrays.toString(arr11));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值