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);
}