Я создаю программу Java
, которая имитирует игру Сердца. У меня есть Card
класса, который я создал для другого карточной игры моделирования:Реализация сопоставима с 2 перечислениями
public abstract class Card implements Comparable<Card>{
public enum Suits {
SPADES,
CLUBS,
HEARTS,
DIAMONDS
}
public enum Values {
TWO,
THREE,
FOUR,
FIVE,
SIX,
SEVEN,
EIGHT,
NINE,
TEN,
JACK,
QUEEN,
KING,
ACE,
}
private Suits suit;
private Values value;
public Card(final Values value, final Suits suit) {
this.value = value;
this.suit = suit;
}
public Values getValue() {
return value;
}
public Suits getSuit() {
return suit;
}
public void showCard() {
value = getValue();
suit = getSuit();
System.out.println(value + " of " + suit);
}
private int compareTo(final Card comparedToCard) {
//code here
}
}
мне нужна помощь, реализующей метод compareTo
. У меня есть опыт использования этого метода и как он должен возвращать 1, 0 или -1 на основе того, как вы хотите сравнить объекты. Тем не менее, я никогда не реализовал его, используя enums
. Я знаю, что класс класса Enum
сопоставим, но даже после просмотра документации по API я не знаю, как сравнить две перечисления.
Мой желаемый результат будет сортировать ArrayList<Card>
таким образом, что они будут отсортированы сначала по Suit
: Club -> Diamond -> лопата -> Сердце и также сортировки по Value
так: Club (2 -> Ace), Diamond (2-> Ace), ЭСТ ...
Любая помощь будет высоко ценится
Не забудьте реализуйте 'equals' и' hashCode', когда вы реализуете 'compareTo'! В настоящее время вы сможете иметь две одинаковые карты в стеке! –
Небольшой совет, который я выбрал из SO: в 'compareTo' называть другой объект' that'; таким образом вы сравниваете 'this' и' that' :) –