私はカードArrayList handのarraylistを持っています。hand={2S,3H,2D,6H,4C} とします。を取得できるように、arraylist ハンドをソートするメソッドが必要ですhand = {4C,2D,3H,6H,2S}
。enum に method があることは知っていますが、compareTo()
使い方がわかりません。誰でも私にいくつかのガイダンスを与えることができますか?
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()
{
}