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

Adding all the elements from an enum into an ArrayList

有没有办法遍历枚举的所有元素并将它们添加到 LinkedList 中?

我尝试做的例子:我正在制作一副纸牌。我有 2 个枚举:排名和价值。使用嵌套的 for 循环,我想使用 2 个枚举将牌组中的每张牌都添加到 ArrayList 中。

谢谢!

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

您可以使用:

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

您需要做的第一件事是创建 Card class.

一旦你有了它,循环遍历第一个枚举的每个元素(使用 .values() 获取每个元素),并且对于每个元素,循环遍历第二个枚举的每个元素。在第二个循环中,使用这些值创建一个新的 Card

试试这个:

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;
}

枚举有 values() 方法,returns 实例数组。

使用两个嵌套的 foreach 循环:

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

我想你想要这样的东西:

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

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