实现两个类的比较
当出现两个类需要进行比较时,> < == != 等运算符无法满足。此时,就需要通过Comparable接口的实现来进行比较。
例如:在String的源码中就是通过实现Comparable接口的方式来实现字符串之间的比较。
通过重写Compareable接口中的compareTo方法来实现
Comparable(默认都是从小到大排列)——自然排序
class Goods implements Comparable{
private String name;
private int price;
public Goods(String name,int price){
this.name = name;
this.price = price;
}
public String getName(){
return name;
}
public int getPrice(){
return price;
}
@Override
public String toString() {
return "Goods{" +
"name=" + name +
", price=" + price +
'}';
}
//让商品按价格从小到大,按名称从大到小排列
@Override
public int compareTo(Object o) {
if(o instanceof Goods){
Goods goods = (Goods) o;
if(Double.compare(this.price , goods.price) != 0){
return Double.compare(this.price , goods.price);
}else{
return -this.name.compareTo(goods.name);
}
}
throw new RuntimeException("传入的数据类型不一致!");
}
}
实现Comparable接口,重写compareTo方法
测试如下:
@Test
public void test1(){
Goods[] goods = new Goods[5];
goods[0] = new Goods("xiaomi",14);
goods[1] = new Goods("oppo",25);
goods[2] = new Goods("HuaWei",15);
goods[3] = new Goods("诺基亚",11);
goods[4] = new Goods("dell",15);
Arrays.sort(goods);
System.out.println(Arrays.toString(goods));
}
运行结果: