在集合上打開一個迭代器的實例是否將整個集合保存在內存中並訪問每次調用next()時都會增加的位置?或者我錯過了什麼?如何在Java中實現迭代器?
4
A
回答
10
的Iterator
的實現依賴於特定的Collection
是迭代。如果您查看JDK源代碼,例如ArrayList
和LinkedList
使用不同的迭代器。
還記得Iterator
是一個接口不是一個具體的類,所以它只是指定一個契約而不是一個實現。
一般來說迭代器將(取決於實現)存儲集合的引用和某種指數來標記他們在忙。
4
完全取決於執行,但一般(對於在內存中的集合構建的迭代器),迭代器將底層集合的引用,所以是的,它會保持在內存中。
請注意,此參考是最有可能不是複製,這就是爲什麼迭代器檢查併發修改它們凡創建的集合。
0
完全取決於與Iterator
相關的對象。記住(幾乎)每個Iterator
與我們迭代的Iterable
有關。
每個Iterable
類可以定義一個自己的Iterator
類,根據請求返回next()
元素。
如何它這樣做deoends在其數據可瞬間:
- 它可以從一個文件中的每個元素提取,從數據庫,從圖書館或什麼的。
- 它可以從已經在內存中的對象獲取每個元素。
- 等
在案例1中它不會可能是保存在內存中的一切有用的,但如果2,我們已經有一切都在內存中,我們可以(會)確實在下一個位置查詢有關該項目的對象。
相關問題
- 1. 實現可迭代在Java
- 2. 實現可迭代在Java中
- 3. Java,如何在列表上正確實現嵌套迭代器?
- 4. 迭代器實現問題
- 5. MySQL的實現迭代器
- 6. 如何在java中使用迭代器?
- 7. 如何實現std-like迭代器的自定義實現?
- 8. Java集合中的迭代器中的光標實現
- 9. Java中的LinkedList是否實現了默認的迭代器?
- 10. Java數組和foreach迭代實現
- 11. 迭代深化搜索Java實現
- 12. 爲什麼編譯器說我只能在MyList實現迭代時迭代迭代一個迭代的實例?
- 13. 如何爲現有的單鏈表實現迭代器?
- 14. 如何重置java中的迭代器?
- 15. 如何在JavaScript中的迭代器生成器中實現遞歸遍歷?
- 16. 我們如何遍歷實現迭代
- 17. Java:迭代器
- 18. 如何實現一個支持可變迭代器的容器?
- 19. 如何爲我的Delegate類實現迭代器或生成器?
- 20. 如何實現識別迭代器的編譯器?
- 21. 如何在java中實現比較器?
- 22. Lua - 實現用戶數據迭代器
- 23. 實現這樣一個迭代器?
- 24. 製作/實現一個迭代器arraylists-的Java
- 25. Java實現Map <String,String>類和迭代器的使用
- 26. Java Joda時間 - 實現日期範圍迭代器
- 27. 的Java迭代器實現造成編譯錯誤
- 28. Java中的迭代器
- 29. Java中的樹迭代器
- 30. 如何在Java中實現
您可以隨時查看源代碼並找出:) – skaffman 2010-02-01 05:05:01
關於源參考,請參閱JDK類ArrayList的代碼:http://www.docjar.com/html/api/java/util/ArrayList.java .html 其中迭代器被實現爲內部類 – sateesh 2010-02-01 06:03:15