在集合上打开一个迭代器的实例是否将整个集合保存在内存中并访问每次调用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