ArrayList的对象直觉

时间:2014-01-28 00:59:17

标签: java

我正在尝试一个编码技能构建器,其目标是创建一个具有最大元素数量的堆栈,因此如果太多推送导致溢出,则会创建一个新堆栈并且push()和pop()会在这个新的堆栈。如果完全弹出该新堆栈,则控制将返回上一个堆栈。

我创建了一个ArrayList来保存我的所有堆栈。我是ArrayLists的新手并遇到了问题,但这是我的想法:

  • 一个int的ArrayList包含一个容器,用于在每个元素上存储一个int,你必须手动用myArrayList.set(0,13)填充一个元素。
  • 因此,Stacks的ArrayList包含一个容器,用于存储对每个元素的堆栈的引用。

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

我的想法在哪里错了?

1 个答案:

答案 0 :(得分:0)

如果您坚持使用ArrayList,可以尝试

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

与索引一起使用的add方法(在本例中为0)将向下推送ArrayList中的其他条目(或者根据文档向右推送到右侧)。当你想从myArrayList中“弹出”一个堆栈时,请调用

myArrayList.remove(0);

这将在0处移除堆栈,并向上(或向左)移动其他堆栈对象。