我们如何将一个堆栈完全弹出到另一个堆栈中

How do we pop one stack completely into another stack

我有这个代码:

for (int i = 0; i < StackA.capacity(); i++) {
    StackB.push(StackA.get(i));
}

但是它给我这个错误:

Array index out of range: 0
    at java.base/java.util.Vector.get

谁能帮我找出我的错误?

如果您正在寻找的是如何在不从 atackA 中删除元素的情况下将元素添加到 stackB,那么您可以使用 Iterator 来遍历 stackA并将其元素添加到 stackB.

//Adding elements within stackB without consuming stackA
for (Iterator<Integer> it = stackA.iterator(); it.hasNext(); ) {
    stackB.push(it.next());
}

否则,正如评论中所建议的那样,如果使用 stackA 中的元素不是问题,您可以简单地迭代第一个堆栈直到它为空并将每个元素弹出到 stackB 在每次迭代期间。

//Adding elements within stackB by consuming stackA
while (!stackA.empty()) {
    stackB.push(stackA.pop());
}