我想知道如何在Stack類中使用迭代器。我如何爲它創建一個迭代器類?我將如何在Java中迭代堆棧
回答
剛剛獲得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);
}
沒有迭代器 - 而{... currentSymbol = stack.pop(); ...} –
@HiteshSahu運行後(stack.isEmpty()!)你的代碼,'stack'將會是空的,因爲'pop()'移除了棧頂。 – Baz
同意。我正在構建一個編譯器,並且正在使用這個變體進行syntex解析。 –
Stack<Object> myStack; // obtain your Stack object
Iterator iterator = myStack.iterator();
while (iterator.hasNext()) {
Object object = iterator.next();
}
請也寫一些解釋,這段代碼是做什麼的。 – Lucifer
你可以這樣做:
for (Iterator<MyObject> iterator = stack.iterator(); iterator.hasNext();) {
MyObject myObject = iterator.next();
myObject.doStuff();
}
聽起來像你實現了一個自定義堆棧類。你的「東西」應該實現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
Stack
實現
呢? http://docs.oracle.com/javase/6/docs/api/java/util/Stack.html 它基於矢量而不是隊列。
如果您正在使用Java Stack
實現,則可以像使用其他答案一樣使用迭代器。 否則,如果這是自定義Stack
,則必須實現Iterable
接口。然後你可以做一些其他的答案。
- 1. Java:迭代兩個堆棧
- 2. 反轉堆棧迭代器
- 3. 堆迭代器java
- 4. 堆棧在java中使用堆棧
- 5. 如何在java中打印堆棧
- 6. 如何在Java中複製堆棧?
- 7. 如何在Java中定義堆棧
- 8. C++映射迭代和堆棧損壞
- 9. 嵌套的async.eachSeries堆棧迭代
- 10. '迭代器不可忽略'C++堆棧
- 11. Java:如何將堆棧的僞代碼轉換爲數組
- 12. Java的通用串行化,可迭代堆棧
- 13. 在java中實現堆棧
- 14. 是我的代碼堆棧?
- 15. 通過堆棧迭代時在javascript中的變量範圍
- 16. Scala:將遞歸函數轉換爲使用堆棧迭代
- 17. Java中的堆棧溢出與Collections-Java中的堆棧實現
- 18. 數組如何在Java中使用堆棧和堆空間?
- 19. Java,堆棧類
- 20. Java堆棧溢出錯誤 - 如何在Eclipse中增加堆棧大小?
- 21. 棧迭代python3
- 22. 替代堆棧
- 23. 如何將Livecode消息框包含在我的堆棧中?
- 24. 我如何識別在導航堆棧
- 25. 我如何知道Java中剩下多少堆棧?
- 26. 用Java Collections取代傳統堆棧?
- 27. Java中的堆棧問題
- 28. Java swing中的堆棧GUI
- 29. 迭代在Java中
- 30. C中的「狀態堆棧溢出」,使用簡單迭代
公共迭代器迭代器(){ \t \t \t} –