Comparable & Comparator

java.lang.Comparable和java.util.Comparator是java提供的两个可以用来指导排序的接口。

  • Comparable

Comparable的用法需要待排序的类直接实现Comparable接口,同时通过在类定义x.compareTo(y)来比较大小。compareTo方法必须确实比较两个对象的内容并返回比较的结果。当x<y,返回负数;当x=y,返回0;当x>y,返回正数。

 public interface Comparable<T> {
    public int compareTo(T o);
 }

示例:

public class Employee implements Comparable<Employee>{
    private double salary;
    @Override
    public int compareTo(Employee other) {
        return Double.compare(salary,other.salary);
        //注:相减技巧不适用浮点值,很相近时四舍五入可能为0。
    }
}
  • Comparator

在List或数组中的对象如果没有实现Comparable接口时,那么就需要调用者为需要排序的数组或List设置一个Comparator,通过Comparator的compare方法进行比较,然后根据比较结果进行排序。

 //数组排序
         Integer[] array = new Integer[]{13,41,5};
         Arrays.sort(array,new Comparator<Integer>(){
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1-o2;
            }
        });
         //lambda表达式
         Arrays.sort(array,(o1,o2)->o1-o2);
         
  //集合排序
        List<Integer> list = Arrays.asList(13,41,5);
        Collections.sort(list,new Comparator<Integer>(){
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1-o2;
            }
        });
        //lambda表达式
        Collections.sort(list,(o1,o2)->o1-o2);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值