是否有方法遍历枚举的所有元素以将它们添加到LinkedList中?将枚举中的所有元素添加到ArrayList中
我试图做的例子:我正在制作一副扑克牌。我有2枚枚举:等级和价值。使用嵌套for循环,我希望使用2个枚举将卡片的每张卡片添加到ArrayList中。
谢谢!
是否有方法遍历枚举的所有元素以将它们添加到LinkedList中?将枚举中的所有元素添加到ArrayList中
我试图做的例子:我正在制作一副扑克牌。我有2枚枚举:等级和价值。使用嵌套for循环,我希望使用2个枚举将卡片的每张卡片添加到ArrayList中。
谢谢!
您可以简单地使用enum类的.values()静态函数。
你可以使用:
for(Rank rank : Rank.values()) {
for (Value val : Value.values()) {
// stuff
}
}
你需要做的第一件事情就是创建一个Card
类。
一旦你有了,循环遍历第一个枚举的每个元素(使用.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()
方法,它返回实例的数组。
使用两个嵌套的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);
}
}
这里假设你有一个卡类,它有一个构造函数每个枚举作为参数。你还需要一个清单或其他收藏夹来存放卡片。
所以你想要两个枚举的每个排列? – 2015-02-05 22:52:28
@DanielKaplan是的。 – Salmononius2 2015-02-05 22:53:15