我将如何在Java中迭代堆栈

时间:2012-10-18 14:35:11

标签: java iterator stack

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

5 个答案:

答案 0 :(得分:18)

只需通过iterator()获取Iterator

Stack<YourObject> stack = ...

Iterator<YourObject> iter = stack.iterator();

while (iter.hasNext()){
    System.out.println(iter.next());
}

或者,如果您只想打印它们,请使用enhanced-for loop

for(YourObject obj : stack)
{
    System.out.println(obj);
}

答案 1 :(得分:4)

你可以这样做:

for (Iterator<MyObject> iterator = stack.iterator(); iterator.hasNext();) {
   MyObject myObject = iterator.next();
   myObject.doStuff();
}

答案 2 :(得分:1)

Stack<Object> myStack; // obtain your Stack object

Iterator iterator = myStack.iterator();
while (iterator.hasNext()) {
   Object object = iterator.next();
}

答案 3 :(得分:1)

听起来像是实现了自定义堆栈类。您的“某事”应该实现Iterable接口,并提供Iterator的实现。

public class MySomethingThatIsAStack<T> implements Iterable<T> {

   @Override
   public Iterator<T> iterator() {
     return new Iterator<T>() {
         // your implementation of the iterator, namely the
         // methods hasNext, next and remove
     }
   }
}

答案 4 :(得分:0)

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 not queues。

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