Java比较器

Java中的比较器:Comparable和Comparator,这两个接口都是为了对类进行比较的
1、Comparable可以理解为内部比较器,实现了Comparable接口的类需要实现compareTo()方法,传入一个外边参数进行比较,Comparable接口实现后不能改动,具体用法如下:
class Apple implements Comparable<Apple>{
int id;
double price;

public Apple(int id,double price){
this.id =id;
this.price=price;
}

public int compareTo(Apple o){
//if(Math.abs(this.price-o.price)<0.001){
// return 0;
//}else{
// return (o.price-this.price)>0?1:-1;
//}
return Double.compare(this.getPrice(),o.getPrice());
}
}


2、Comparator可以理解为外部比较器,实现Comparator接口的类需要实现compare()方法,对外部传入的两个类进行比较,从而让外部方法在比较时调用,实现Comparator接口代码更加灵活,可以定义某个类的多个比较器,从而在排序时根据实际场景自由调用,具体实例如下:
class AESComparator implements Comparator<Apple>{
public int compare(Apple o1,Apple o2){
//if(Math.abs(o1.price-o2.price)<0.001){
// return 0;
//}else{
// return (o1.price-o2.price)>0?1:-1;
//}
return Double.compare(o1.price,o2.price);
}
}

class DESComparator implements Comparator<Apple>{
public int compare(Apple o1,Apple o2){
//if(Math.abs(o1.price-o2.price)<0.001){
// return 0;
//}else{
// return (o1.price-o2.price)>0?-1:1;
//}
return Double.compare(o2.price,o1.price);
}
}


备注:注释处原因,不能在比较器中进行double类型的减法操作,因为对于值较大的double,减法操作容易导致值溢出,java7对每一种包装类型的比较新增了compare()的方法。


本文根据https://www.cnblogs.com/andywithu/p/7239613.html编写

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值