打印堆栈而不弹出java元素

打印堆栈而不弹出java元素,java,printing,stack,Java,Printing,Stack,对于一项任务,我必须编写一个打印堆栈的方法,这一部分很简单 public void print(stack s) { while(!isEmpty()) { System.out.println(s.peek()); s.pop(); } } 问题是,在打印堆栈后,我的任务是打印堆栈上的底部元素,因为我在打印方法中使用了s.pop(),所以不再有了。这是我打印底部元素的代码 public void bottom(stack s) { if(isE

对于一项任务,我必须编写一个打印堆栈的方法,这一部分很简单

public void print(stack s)
{
   while(!isEmpty())
   {
      System.out.println(s.peek());
      s.pop();
   }

}
问题是,在打印堆栈后,我的任务是打印堆栈上的底部元素,因为我在打印方法中使用了s.pop(),所以不再有了。这是我打印底部元素的代码

public void bottom(stack s)
{
  if(isEmpty())
   {
     System.out.println("Stack is empty");
   }
  else
   {
     System.out.println(stackArray[0]);
   }
}
我的问题是:我应该如何修改print方法,以便不必从堆栈中弹出元素?或者有没有其他方法可以使堆栈在使用print方法后仍然保存我的元素

如resquested所示,这是我们在类中使用的堆栈(大部分是荷兰语):


这可能不是最好的方法,但它很有效:p

如果您使用内置的
java.util.Stack
类型,那么它派生自
Vector
,因此您可以使用
getElement(int)
读取任何堆栈深度的元素

如果这是您自己的代码,则必须添加一个方法来执行相同的操作


或者,您可以将元素弹出到另一个堆栈或
列表类型中,然后在打印后重建堆栈,但这将非常低效,您的老师很可能会反对这种解决方案。

如果您只想查看内容而不想看到任何花哨的东西,有一个简单的解决方法

System.out.println(Arrays.toString(myStack.toArray()));
检查堆栈是否为空

for(int i=_stack.size()-1; i>=0;i--)  
System.out.println(_stack.get(i));

获取堆栈值

当它们在任何集合对象上工作时,使用迭代器在堆栈中循环。

可以添加堆栈类吗?使用迭代器:public void printStack(stack stack){Iterator itr=stack.Iterator();while(itr.hasNext()){sysout(itr.next);}
System.out.println(Arrays.toString(myStack.toArray()));
if (!_stack.empty())
for(int i=_stack.size()-1; i>=0;i--)  
System.out.println(_stack.get(i));