Mi chiedo come utilizzare l'iteratore in una classe Stack. Come posso creare una classe iteratore per questo?Come eseguire una ripetizione di una pila in Java
risposta
solo ottenere il Iterator
via iterator()
:
Stack<YourObject> stack = ...
Iterator<YourObject> iter = stack.iterator();
while (iter.hasNext()){
System.out.println(iter.next());
}
Oppure, in alternativa, se si desidera solo stampare tutti usano il enhanced-for loop:
for(YourObject obj : stack)
{
System.out.println(obj);
}
Senza iteratore - mentre {... currentSymbol = stack.pop(); ...} –
@HiteshSahu Dopo esecuzione (stack.isEmpty()!) il tuo codice, 'Stack' sarà vuoto poichè' pop() 'rimuove la parte superiore della pila. – Baz
Accetto. Stavo costruendo un compilatore e stavo usando questa variazione per l'analisi sintex. –
Stack<Object> myStack; // obtain your Stack object
Iterator iterator = myStack.iterator();
while (iterator.hasNext()) {
Object object = iterator.next();
}
Si prega di scrivere anche qualche spiegazione, cosa fa questo codice. – Lucifer
si potrebbe fare:
for (Iterator<MyObject> iterator = stack.iterator(); iterator.hasNext();) {
MyObject myObject = iterator.next();
myObject.doStuff();
}
Sembra che tu abbia implementato una classe di stack personalizzata. Il tuo "qualcosa" dovrebbe implementare l'interfaccia Iterable
e fornire un'implementazione di 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
Questo significa che non si utilizza la Java Stack
implementazione? http://docs.oracle.com/javase/6/docs/api/java/util/Stack.html Si basa su Vector non in coda.
Se si utilizza l'implementazione Java Stack
, è possibile utilizzare iteratore come altre risposte. Altrimenti, se questa è una custom Stack
, è necessario implementare l'interfaccia Iterable
. E poi puoi fare qualcosa come altre risposte.
Iterator pubblico iterator() { \t \t \t} –