如何访问ArrayList中的堆栈或链表?

时间:2017-10-10 13:58:02

标签: java arraylist stack

所以我试图在一个名为Table的类中使用一个带有堆栈的ArrayList创建“堆”,其中堆栈包含卡对象(在一个单独的类中定义)。

我像这样初始化它:

private MyArrayList<MyStack<Card>> piles;    

public Table()
{
  MyStack<Card> piles = new MyStack<>();
}

我的问题是我无法弄清楚如何在ArrayList中的堆栈中添加内容。我的初始化错了吗?如果是这样,我该如何解决?

注意:MyArrayList和MyStack本质上只是ArrayList和Stack的略有不同版本。

2 个答案:

答案 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>> allPilespileName