欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java比较器,

来源: javaer 分享于  点击 985 次 点评:278

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编写

相关文章

    暂无相关文章
相关栏目:

用户点评