Stackクラスでイテレータを使用する方法を知りたいです。そのための反復子クラスをどのように作成しますか?
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);
}
あなたがすることができます:
for (Iterator<MyObject> iterator = stack.iterator(); iterator.hasNext();) {
MyObject myObject = iterator.next();
myObject.doStuff();
}
Stack<Object> myStack; // obtain your Stack object
Iterator iterator = myStack.iterator();
while (iterator.hasNext()) {
Object object = iterator.next();
}
カスタムスタッククラスを実装したようですね。 「何か」は、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
}
}
}
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 キューではなくベクターに基づいています。
Java Stack
の実装を使用している場合は、他の回答のようにイテレータを使用できます。それ以外の場合、それがカスタムのStack
の場合は、Iterable
インターフェースを実装する必要があります。次に、他のようなことを行うことができます答えます。