2015-02-05 45 views
1

是否有方法遍历枚举的所有元素以将它们添加到LinkedList中?将枚举中的所有元素添加到ArrayList中

我试图做的例子:我正在制作一副扑克牌。我有2枚枚举:等级和价值。使用嵌套for循环,我希望使用2个枚举将卡片的每张卡片添加到ArrayList中。

谢谢!

+0

所以你想要两个枚举的每个排列? – 2015-02-05 22:52:28

+1

@DanielKaplan是的。 – Salmononius2 2015-02-05 22:53:15

回答

3

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

你可以使用:

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

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

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

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

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

使用两个嵌套的foreach循环:

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

我想你想是这样的:

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

这里假设你有一个卡类,它有一个构造函数每个枚举作为参数。你还需要一个清单或其他收藏夹来存放卡片。

相关问题