我正在制作一个模拟纸牌游戏的程序。我有一个代表纸牌的Card类:

//suit types
public enum Suits{
    SPADES,
    CLUBS,
    HEARTS,
    DIAMONDS
}

//value types
public enum Values{
    TWO,
    THREE,
    FOUR,
    FIVE,
    SIX,
    SEVEN,
    EIGHT,
    NINE,
    TEN,
    JACK,
    QUEEN,
    KING,
    ACE,
}

private Suits suit;
private Values value;

//Card constructor
public Card(Values value, Suits suit){
    this.value = value;
    this.suit = suit;
}


在我的游戏课程中,我有一个由ListCards表示的玩家手牌:

public List<Card> playerHand = new ArrayList<Card>();


有什么方法可以按枚举Values对玩家的手进行排序吗?意思是玩家的牌是:

十,王牌,二,五

订购后将是:

二,五,十,王牌

我的条件是Ace总是很高,而Suit没关系。我知道排序列表很简单,我只是不知道如何针对基于Objectenum

最佳答案

使用

Collections.sort(list, comparator);


用于排序。至于比较器:

new Comparator<Card>() {
  @Override
  public int compare(Card x, Card y) {
    return x.getValue().compareTo(y.getValue());
  }
}

关于java - 订购对象 list ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23136226/

10-10 22:34