当前位置: 首页 > 知识库问答 >
问题:

如何访问ArrayList中的堆栈或链表?[重复]

韩涵衍
2023-03-14

因此,我试图使用ArrayList在名为Table的类中创建卡片的“堆”,其中包含包含卡片对象(在单独的类中定义)的堆栈。

我是这样初始化的:

private MyArrayList<MyStack<Card>> piles;    

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

我的问题是,我不知道如何在ArrayList内的堆栈中添加内容。我对它的初始化是否错误?如果是,我如何修复它?

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

共有2个答案

吕亮
2023-03-14

在这里迭代列表,将卡片推到堆栈中。

for (MyStack cards: piles) {
    cards.push(new Card);
}
顾涵衍
2023-03-14

变量名称有点混乱。考虑:

// 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

 类似资料:
  • 我一直在获取x,下一个在节点中有私人访问权限。我试着在Node类和link List类中进行切换,但无论切换什么,都会出现相同的错误。我的节点保存在另一个文件中,看起来是这样的:`` 然后我的链表堆栈代码如下:

  • 问题内容: 使用Java中的链表实现堆栈的最佳方法是什么? 编辑:我将最好的定义为最有效的使用干净的代码。我已经使用数组来实现堆栈,但是对链接列表不熟悉,因此想知道是否有人可以帮助我实现类似于以下内容的内容: 编辑:如果有人感兴趣,这是链表的实现。 问题答案: 假设您真的想从头开始,而不是使用现有的完美堆栈实现之一,那么我建议您: 创建一个“ MyStack ”类,该类实现所需的任何接口(也许列出

  • 我知道Java通过扩展Vector搞砸了栈实现。默认情况下,矢量是同步的。阅读java文档,它说要创建一个堆栈, 因为我对java比较陌生。我的问题是:这是在Java中定义堆栈的最佳实践吗?

  • 所以我有一个堆栈,它允许典型的Push和Pop函数。我很难理解这一切实际上是如何在代码方面工作的。我在这里看到了这篇文章,最佳答案中的图片/图表,展示了列表是如何被“推”下来的,你指向最新的元素。我有一个 它挂接到结构“节点” 我如何结合一个推拉与"节点*下一步;"?最难理解的是我将如何真正做到这一点。我知道它最初指向空,然后如果我推一个2,4,6,它将是6,4,2,#。掌握如何实际使用链表中的指

  • 我有一个堆栈的ArrayList,我在其中一个堆栈中添加了一个元素,并在列表中循环打印每个堆栈的索引 然后我从上一个堆栈中删除元素,将其添加到下一个堆栈中,打印每个堆栈的索引,并对ArrayList中的所有堆栈继续此操作 然而,当任何堆栈为空时,在获取ArrayList中每个堆栈的索引时会出现非常不寻常的行为。非空的堆栈将具有正确的索引值,而空的堆栈将具有错误的索引值 此外,如果包含元素的堆栈的索

  • 好的,通过下面的代码,我从pop方法中的所有内容中得到了一个null指针异常。因此,我知道当该方法运行时,“head”必须为null。问题是我不知道为什么,我已经仔细检查了我的代码。请帮忙! 节点类: 链接列表类: 我在一个将十进制数转换为二进制数(对于一个类)的程序中实现了这一点。我可以打印第一个节点的数据,也就是链表的头,但是当再次弹出时,就会出现空值问题。