2012-10-18 1 views

risposta

16

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); 
} 
+0

Senza iteratore - mentre {... currentSymbol = stack.pop(); ...} –

+2

@HiteshSahu Dopo esecuzione (stack.isEmpty()!) il tuo codice, 'Stack' sarà vuoto poichè' pop() 'rimuove la parte superiore della pila. – Baz

+0

Accetto. Stavo costruendo un compilatore e stavo usando questa variazione per l'analisi sintex. –

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

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

Si prega di scrivere anche qualche spiegazione, cosa fa questo codice. – Lucifer

4

si potrebbe fare:

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

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 
    } 
    } 
} 
0

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.