2014-01-28 31 views
0

我想要一个编码技巧建设者的目标是使一个堆栈具有max#元素,所以如果太多推动导致溢出一个新的堆栈创建和push()和流行()在这个新的堆栈上运行。如果新的堆栈完全弹出,则控制权返回到前一堆栈。ArrayList的对象直觉

我创建了一个ArrayList来容纳我所有的堆栈。我是新来的ArrayList和遇到了问题,但这里是我的想法:

  • 整数的ArrayList持有的容器来存储一个int在每个元素,你必须手动填写一个元素的东西,如myArrayList .SET(0,13)。
  • 因此,StackList的ArrayList包含一个容器,用于在每个元素处存储对堆栈的引用。

但是,如何存储对堆栈的引用?我不能只做myArrayList.set(0,Stack myStack)。我认为正确的答案可能是myArrayList.set(0,new Stack()),但不符合直觉。就像一个int的ArrayList只是容器一样,一个Stack引用的ArrayList不应该已经持有堆栈引用,只是空的容器。

我的思维错在哪里?

+0

第一个问题:由于泛型不适用于Java中的基元,因此您不能拥有'ArrayList '...... –

+0

您是否对堆栈本身有任何特定的数据结构? 'LinkedList'可能是一个不错的选择。实际上每个堆栈里面会发生什么? –

+2

有很多方法可以回答这个问题,但是如果你想要建立你的技能,我建议你尝试编码这些,以及各种选择,以获得更好的感觉。在调试器下运行它,看看它是如何工作的。这将有助于建立你的技能和你的直觉 - 如果我们告诉你答案,你将不会得到。 – jdigital

回答

0

如果你要坚持使用ArrayList中,你可以尝试

myArrayList.add(0, new Stack()); 

与(在这种情况下,0)索引使用add方法将推动其他条目ArrayList中向下(或更准确地说,按照文档右侧)。当你想“弹出”堆栈出myArrayList的,叫

myArrayList.remove(0); 

这将在0删除栈,并移动其他协议栈对象向上(或左侧)。