如何在Java中实现迭代器?
答
的Iterator
的实现依赖于特定的Collection
是迭代。如果您查看JDK源代码,例如ArrayList
和LinkedList
使用不同的迭代器。
还记得Iterator
是一个接口不是一个具体的类,所以它只是指定一个契约而不是一个实现。
一般来说迭代器将(取决于实现)存储集合的引用和某种指数来标记他们在忙。
答
完全取决于执行,但一般(对于在内存中的集合构建的迭代器),迭代器将底层集合的引用,所以是的,它会保持在内存中。
请注意,此参考是最有可能不是复制,这就是为什么迭代器检查并发修改它们凡创建的集合。
答
完全取决于与Iterator
相关的对象。记住(几乎)每个Iterator
与我们迭代的Iterable
有关。
每个Iterable
类可以定义一个自己的Iterator
类,根据请求返回next()
元素。
如何它这样做deoends在其数据可瞬间:
- 它可以从一个文件中的每个元素提取,从数据库,从图书馆或什么的。
- 它可以从已经在内存中的对象获取每个元素。
- 等
在案例1中它不会可能是保存在内存中的一切有用的,但如果2,我们已经有一切都在内存中,我们可以(会)确实在下一个位置查询有关该项目的对象。
您可以随时查看源代码并找出:) – 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