嗨,我有Card类......在另一个类中,我创建了一个Card对象的数组列表。我将如何去基于卡的价值对arrayList进行排序?王牌是最低的牌值,国王是最高的。ArrayList ArrayList中的对象
A,2,3,4,5,6,7,8,9,T,J,Q,K
public class Card {
char rank, suit;
public Card(char rank, char suit){
this.rank = rank;
this.suit = suit;
}
public void setCard(char rank, char suit){
this.rank = rank;
this.suit = suit;
}
public char getRank(){
return rank;
}
public char getSuit(){
return suit;
}
public void setRank(char rank){
this.rank = rank;
}
public void setSuit(char suit){
this.suit = suit;
}
public String toString(){
String str = "";
str += this.getRank();
str += this.getSuit();
return str;
}
public boolean equals(Object obj){
Card card = (Card) obj;
if(this.rank == card.getRank() && this.suit == card.getSuit()){
return true;
}
return false;
}
public boolean isValidCard(Card card){
char s = card.getSuit();
char r = card.getRank();
if(s=='H' || s=='S' || s=='D' || s=='C'){
if(r=='A' || r=='2' || r=='3' || r=='4' || r=='5' || r=='6' || r=='7' ||
r=='8' || r=='9' || r=='T' || r=='J' || r=='Q' || r=='K'){
return true;
}
}
return false;
}
public boolean allowedInHigherPiles(Card card, Game game, int pile){
if(pile>=5 && game.getPile(pile).cards.size()==0){
if(card.getRank()!='K')
return false;
}
return true;
}
}
由于一副牌具有自然排序顺序,我建议使用Comparable接口通过单独的Comparator类。当对象没有自然的排序顺序时,比如类的鞋类应该使用比较类。不同的人以不同的方式(按颜色,按尺寸,按价格)对鞋子进行分类。 :-) – 2009-04-26 20:32:46
比约恩:除非王牌在许多游戏中的角色发生变化(比如BJ和扑克),否则我会同意,所以我会小心地为卡片添加语义。 – Uri 2009-04-26 20:55:45