如何打印出堆栈的全部内容?

How to print out the whole contents of a stack?

我想知道一种打印出 java 中整个堆栈内容的方法,而不需要弹出元素,因为它们需要留在堆栈中。我想使用 peek 但想不出一种方法来遍历堆栈然后将它们全部打印出来,我只能查看堆栈顶部的值。

我想到了两个解决方案。您无权访问堆栈的非顶部元素,因此:

1) 你可以边打印边放东西。

2) 您可以将它们弹出到临时堆栈中并打印出来。然后一旦原始堆栈为空,将它们全部从临时堆栈推回原始堆栈。

如果你说的是 java.util.Stack,它有一个 iterator() 方法,你可以用它来迭代它的元素,例如:

Iterator<Integer> iterator = stack.iterator();
while (iterator.hasNext()) {
    System.out.println(iterator.next());
}

您也可以使用 .toString() 方法。 例如,如果堆栈中有 1、2、3、4, 那么 .toString() 会将其格式化为 [1, 2, 3, 4].

要从上到下迭代,您可以使用 stack.listIterator() 而不是向后迭代:

ListIterator<Integer> listIterator = stack.listIterator(stack.size());
while (listIterator.hasPrevious()) {
    System.out.println(listIterator.previous());
}