我正在尝试一个编码技能构建器,其目标是创建一个具有最大元素数量的堆栈,因此如果太多推送导致溢出,则会创建一个新堆栈并且push()和pop()会在这个新的堆栈。如果完全弹出该新堆栈,则控制将返回上一个堆栈。
我创建了一个ArrayList来保存我的所有堆栈。我是ArrayLists的新手并遇到了问题,但这是我的想法:
但是如何存储对堆栈的引用?我不能只做myArrayList.set(0,Stack myStack)。我认为正确的答案可能是myArrayList.set(0,new Stack()),但这不符合直觉。就像int的ArrayList只容纳容器一样,堆栈引用的ArrayList不应该已经是堆栈引用,只是空容器。
我的想法在哪里错了?
答案 0 :(得分:0)
如果您坚持使用ArrayList,可以尝试
myArrayList.add(0, new Stack());
与索引一起使用的add方法(在本例中为0)将向下推送ArrayList中的其他条目(或者根据文档向右推送到右侧)。当你想从myArrayList中“弹出”一个堆栈时,请调用
myArrayList.remove(0);
这将在0处移除堆栈,并向上(或向左)移动其他堆栈对象。