所以我试图在一个名为Table的类中使用一个带有堆栈的ArrayList创建“堆”,其中堆栈包含卡对象(在一个单独的类中定义)。
我像这样初始化它:
private MyArrayList<MyStack<Card>> piles;
public Table()
{
MyStack<Card> piles = new MyStack<>();
}
我的问题是我无法弄清楚如何在ArrayList中的堆栈中添加内容。我的初始化错了吗?如果是这样,我该如何解决?
注意:MyArrayList和MyStack本质上只是ArrayList和Stack的略有不同版本。
答案 0 :(得分:0)
在列表中迭代堆栈,在堆栈中推送卡片。
for (MyStack cards: piles) {
cards.push(new Card);
}
答案 1 :(得分:0)
变量名称有点令人困惑。考虑:
// private MyArrayList<MyStack<Card>> piles;
private final ArrayList<Stack<Card>> allPiles;
public Table() {
// MyStack<Card> piles = new MyStack<>();
allPiles = new ArrayList<>();
}
然后你可以这样做:
public void addCardToPile(Card card, int pileIndex) {
while (allPiles.size() < pileIndex) {
allPiles.add(new Stack<Card>());
}
allPiles.get(pileIndex).push(card);
}
public Card getTopCardFromPile(int pileIndex) {
while (allPiles.size() < pileIndex) {
allPiles.add(new Stack<Card>());
}
if (allPiles.get(pileIndex).isEmpty()) {
return null;
}
return allPiles.get(pileIndex).pop();
}
但目前尚不清楚ArrayList
是否最合适。考虑使用Map<Integer, Stack<Card>> allPiles
,而不是pileIndex
,而不是pileNumber
。或Map<String, Stack<Card>> allPiles
与pileName
。