将枚举中的所有元素添加到ArrayList中

时间:2015-02-05 22:49:33

标签: java arraylist enums

有没有办法迭代枚举的所有元素以将它们添加到LinkedList中?

我试图做的例子:我制作了一副纸牌。我有2个枚举:排名和价值。使用嵌套的for循环,我希望使用2个枚举将deck中的每张卡添加到ArrayList中。

谢谢!

5 个答案:

答案 0 :(得分:3)

您可以简单地使用枚举类的.values()静态函数。

您可以使用:

for(Rank rank : Rank.values()) {
  for (Value val : Value.values()) {
    // stuff
  }
}

答案 1 :(得分:2)

试试这个:

enum Rank { ... }

enum Suit { ... }

class Card {
    Rank rank;
    Suit suit;

    Card(Rank r, Suit s) { rank = r; suit = s; }
}

然后...... ..

List<Card> all() {
    List<Card> cards = new ArrayList<>();
    for (Rank r : Rank.values()) {
        for (Suit s : Suit.values()) {
            cards.add(new Card(r, s));
        }
    }

    return cards;
}

答案 2 :(得分:1)

您需要做的第一件事就是创建一个Card类。

完成后,循环遍历第一个枚举的每个元素(使用.values()获取每个元素),并为每个元素循环遍历第二个枚举的每个元素。在第二个循环中,使用这些值创建一个新的Card

答案 3 :(得分:1)

枚举具有values()方法,该方法返回实例数组。

使用两个嵌套的foreach循环:

List<Card> deck = new LinkedList<>();
for (Suit suit : Suit.values())
    for (Rank rank : Rank.values())
        deck.add(new Card(suit, rank));

答案 4 :(得分:1)

我想你想要这样的东西:

for(Rank r : Rank.values()){
    for(Value v : Value.values()) {
        // new Car(r, v);
    }
}

这假设您有一个Card类,其构造函数将每个枚举作为参数。您还需要一个列表或其他集合来存放卡片。