我想知道如何在Stack类中使用迭代器。如何为它创建迭代器类?
答案 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
接口。然后你就可以做其他答案了。