2012-10-18 15 views

Antwort

16

Nehmen Sie einfach die Iterator über iterator():

Stack<YourObject> stack = ... 

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

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

Oder alternativ, wenn man ihnen nur alle die enhanced-for loop verwenden möchten, drucken:

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

Ohne Iterator - während {... currentSymbol = stack.pop(); ...} –

+2

@HiteshSahu Nach dem Ausführen (stack.isEmpty()!) Ihr Code, der 'Stack' ist leer, während' pop() 'den oberen Teil des Stacks entfernt. – Baz

+0

Zustimmen. Ich baute einen Compiler und ich benutzte diese Variante für syntex Parsing. –

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

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

Bitte schreiben Sie auch eine Erklärung, was macht dieser Code. – Lucifer

4

Sie könnten tun:

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

Klingt so, als hätten Sie eine benutzerdefinierte Stack-Klasse implementiert. Ihr "Etwas" sollte die Iterable Schnittstelle implementieren und eine Implementierung von Iterator bereitstellen.

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

Heißt das, Sie bedeuten nicht die Java Stack Implementierung mit? http://docs.oracle.com/javase/6/docs/api/java/util/Stack.html Es basiert auf Vektor nicht Warteschlangen. Wenn Sie die Java-Implementierung Stack verwenden, können Sie den Iterator wie andere Antworten verwenden. Andernfalls, wenn das eine benutzerdefinierte Stack ist, müssen Sie die Iterable Schnittstelle implementieren. Und dann kannst du so etwas wie andere Antworten tun.

Verwandte Themen