一:使用背景
- 说明 Java 中的对象,正常情况下只能进行比较:== 或 != 不能使用 < 或者 > ,但是实际开发中我们需要比较对象的大小如何实现:使用两个接口中的一个 Comparable 或 Comparator。
二: 使用方法(Compare方法重写规则)
< 如果当前对象this大于形参obj,则返回正整数;
< 如果当前对象this小于形参obj,则返回负数;
< 相等则返回0;
三:使用举例
- 创建一个商品类,比较里面的属性
package Javacomparator;
import java.util.Comparator;
/**
* @Author:CT
* @Date:2021/2/2
* @Description:Javacomparator
* @Version 1.0
*/
/*
创建一个自定义类 重写comparato方法 去比较类中的属性
*/
public class CompareGoods implements Comparable {
String goods;
int price;
public CompareGoods(){
}
public CompareGoods(String goods, int price) {
this.goods = goods;
this.price = price;
}
@Override
public String toString() {
return "CompareGoods{" +
"goods='" + goods + '\'' +
", price=" + price +
'}';
}
@Override
public int compareTo(Object o) {
if (o instanceof CompareGoods){
Comparable comparable=(Comparable)o;
if (this.price>((CompareGoods) o).price){
return 1;
}else if (this.price<((CompareGoods) o).price){
return -1; }else{
return 0;
}
}
throw new RuntimeException("传入的数据类型不一致");
}
}
- 在测试类里面测试比较结果
CompareGoods[] compareGoods = new CompareGoods[4];//给四个对象分别赋值
compareGoods[0] = new CompareGoods("Lenovo", 44);
compareGoods[1] = new CompareGoods("Dell", 55);
compareGoods[2] = new CompareGoods("Microstof", 66);
compareGoods[3] = new CompareGoods("HuaWEi", 77);
Arrays.sort(compareGoods);
System.out.println(Arrays.toString(compareGoods));
- 运行结果
结果是按照加个顺序输出
[CompareGoods{goods='Lenovo', price=44},
CompareGoods{goods='Dell', price=55},
CompareGoods{goods='Microstof', price=66},
CompareGoods{goods='HuaWEi', price=77}]
四:总结
- 需要比较自定义类,则需要重写CompareTo方法,在方法里面重写比较的规则