比较自定义类中的对象大小

一:使用背景

  • 说明 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方法,在方法里面重写比较的规则
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值