我有一個數組列表ArrayList的arraylist;假設手= {2S,3H,2D,6H,4C}。我需要一種方法來排列數組列表手,以便獲得hand = {4C,2D,3H,6H,2S}
。我知道枚舉有一個方法compareTo()
,但我不知道如何使用它。任何人都可以給我一些指導嗎?如何使用枚舉類型對arraylist進行排序
public class PlayingCard implements Comparable
{
//Instance Variables
private Suit suit;
private Rank rank;
//Constructor
public PlayingCard(Suit suit, Rank rank)
{
this.suit = suit;
this.rank = rank;
}
....
public int compareTo(Object other)
{
PlayingCard that = (PlayingCard)other;
if (this.suit == that.suit)
return -this.rank.compareTo(((PlayingCard)other).rank);
return -this.suit.compareTo(((PlayingCard)other).suit);
}
//============================================================================
//Representation of the Suit of a Playing-Card
public enum Suit
{
CLUBS('C'), DIAMONDS('D'), HEARTS('H'), SPADES('S');
private char symbol;
private Suit(char symbol)
{
this.symbol = symbol;
}
public char getSymbol()
{
return this.symbol;
}
}
//============================================================================
//Representation of the Rank os a Playing-Card
public enum Rank
{
DEUCE('2'), TREY('3'), FOUR('4'), FIVE('5'), SIX('6'), SEVEN('7'),
EIGHT('8'), NINE('9'), TEN('T'), JACK('J'), QUEEN('Q'), KING('K'), ACE('A');
private char symbol;
private Rank(char symbol)
{
this.symbol = symbol;
}
public char getSymbol()
{
return this.symbol;
}
}
}
--------------------------------------------------------------------------------------
public class PlayingCardHand {
//Instance Variables
private int cardsInCompleteHand; //Maximum # cards in this hand
private ArrayList<PlayingCard> hand; //A hand of Playing-Cards
private Comparator comparer; //Client-provided comparison of PlayingCards
//Constructor
//Appropriate when PlayingCard compareTo() is to be used to compare PlayingCards
public PlayingCardHand(int handSize) {
if (handSize < 1) {
throw new RuntimeException("Hand size cannot be less than 1");
}
cardsInCompleteHand = handSize;
hand = new ArrayList<PlayingCard>();
}
...
public void sortCards()
{
}
你有代表卡的對象嗎?您只向我們展示了代表卡片組件的兩個枚舉。 –
是的,我有代表卡 – jorgeAChacon
@ user1166061的對象,你能告訴我們代碼嗎? – mre