我有这个类使用enum类型的套牌。 使这个类比较可以将卡按升序排序的最有效方法是什么? 如果它们是枚举类型,那么也可以在方法中比较两个卡片面值? (例如返回差异或什么?) 谢谢。Comparable Class Java
public class Card {
public enum Rank {ACE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN,
JACK, QUEEN, KING}
public enum Suit {CLUBS, DIAMONDS, HEARTS, SPADES}
private final Rank rank;
private final Suit suit;
private Card(Rank rank, Suit suit) {
this.rank = rank;
this.suit = suit;
}
public int compareTo(Card c) {
Card aCard = (Card)c;
int rankComparison = rank.compareTo(aCard.rank);
return rankComparison != 0 ? rankComparison : suit.compareTo(aCard.suit);
}
public Rank rank(){
return rank;
}
public Suit suit(){
return suit;
}
public String toString(){
return "The " + rank + " of " + suit + ".";
}
}
你似乎有一个完全合理的'compareTo'实施那里。唯一缺少的是在'public class Card'后添加'implements Comparable''。 –
我真的不明白你的问题,但你应该改变你的类声明为'public class Card implements Comparable' –
jlordo
'只需添加'Card implements Comparable',你的实现除了superflous'aCard'变量以外还可以。 –