我将如何在Java中迭代堆栈

我想知道如何在Stack类中使用迭代器。 如何为它创建迭代器类?

你可以这样做:

 for (Iterator iterator = stack.iterator(); iterator.hasNext();) { MyObject myObject = iterator.next(); myObject.doStuff(); } 
 Stack myStack; // obtain your Stack object Iterator iterator = myStack.iterator(); while (iterator.hasNext()) { Object object = iterator.next(); } 

听起来像是实现了自定义堆栈类。 你的“东西”应该实现Iterable接口并提供Iterator的实现。

 public class MySomethingThatIsAStack implements Iterable { @Override public Iterator iterator() { return new Iterator() { // your implementation of the iterator, namely the // methods hasNext, next and remove } } } 

I am working on something that is implementing a stack using queues

这是否意味着您没有使用Java Stack实现? http://docs.oracle.com/javase/6/docs/api/java/util/Stack.html它基于Vector而不是队列。

如果您正在使用Java Stack实现,则可以像其他答案一样使用迭代器。 否则,如果这是一个自定义Stack ,则必须实现Iterable接口。 然后你可以做其他答案。