嗨,我有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