java中的Comparable和Comparator

Comparable:使用Comparable一般都是通过类去实现此接口的,在类的内部去实现这个方法,所以一般人也称作为内部比较器(相对于Comparator来说),有好多的java原生的类都是实现了这个接口,比如String,....。

public interface Comparable<T> {
//如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
    public int compareTo(T o);
}

 

 

Comparator:使用Comparator一般都是写一个类去实现Comparator接口,让这个类作为专用的比较器,在需要比较器的地方当做参数传入进去,这样就可以使用比较器了。

public interface Comparator<T> {
//根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。 
    int compare(T o1, T o2);
}

 

 

使用Comparable的时候只能是让这个类实现接口,使其具有比较的功能,因为其需要override的函数compareTo(Object o),只要一个参数,所以只能用作内部的比较器,而使用Comparator的则是专门的建一个类实现Comparator作为比较器去用,可以单独的拿出来,不用捆绑到类上,在实际工作中可能会出现比较大小写字母的时候按照字母的顺序部分大小写,但是在java中String已经实现了compareTo,而且分大小写,我们知道A,D,a,d是这样排序的,如果使用自带的则是A,D,a,d,但是要求我们的结果是A,a,D,d,这时候就应该重新排序了。

  List<String> list=new ArrayList<String>();
    list.add("A");
    list.add("D");
    list.add("a");
    list.add("d");
    list.add("C");
    list.add("c");
    System.out.println(list);
    System.out.println("--------------------------------------------");
    Collections.sort(list);
    System.out.println(list);
    System.out.println("---------------------------------------------");
    Collections.sort(list, new Comparator<String>() {
        @Override
        public int compare(String o1, String o2) {
            if(o1==null||o2==null)
                return 0;
            return o1.toUpperCase().compareTo(o2.toUpperCase());
        }
    });
    System.out.println(list);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值