对象的比较代码

class   Card   implements  Comparable<Card> {
    int rank;//数值
    String  suit;//花色
    Card(int rank,String suit){
        this.rank=rank;
        this.suit=suit;
    }

    @Override
    public boolean equals(Object obj) {
       //自己和自己比较
        if(this==obj){
           return  true;
       }
       //对象为空  obj不是card的子类
        if(obj==null|| !(obj  instanceof  Card )){
            return false;
        }
           Card  o=(Card)obj;
         return    this.rank==o.rank&&this.suit.equals(o.suit);
    }
    public  int compareTo(Card  o){
        if(o==null){
            return -1;
        }
        return this.rank-o.rank;
    }
}
//用户自定义新类,该类实现Comparator<>
//重写compare方法
class   CradComparator  implements Comparator<Card>{
    @Override
    public int compare(Card o1, Card o2) {
       if(o1==null){
           return  -1;
       }
       if(o2==null){
           return  1;
       }
       if(o1==o2){
           return 0;
       }
       return  o1.rank-o2.rank;
    }
}

测试用例

public  static  void  test2(){
        //
      PriorityQueue<Card>  p=new PriorityQueue<>(4,new CradComparator());
      p.offer(new Card(1,"红桃"));
      p.offer(new Card(2,"黑桃") );
      p.offer(new Card(3,"黑桃") );
      p.offer(new Card(4,"黑桃") );


  }
public  static   void    test1( ){
         Card  card=new Card(1,"红桃");
    Card  card1=new Card(2,"红桃");
    Card  card2=new Card(3,"红桃");
    PriorityQueue<Card>  p=new PriorityQueue<>(4);
    p.offer(card);
    p.offer(card1);
    p.offer(card2);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值