有没有办法迭代枚举的所有元素以将它们添加到LinkedList中?
我试图做的例子:我制作了一副纸牌。我有2个枚举:排名和价值。使用嵌套的for循环,我希望使用2个枚举将deck中的每张卡添加到ArrayList中。
谢谢!
答案 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类,其构造函数将每个枚举作为参数。您还需要一个列表或其他集合来存放卡片。