据我所知,Iterator 和 ListIterator 之间的主要区别是
迭代器:使您能够仅向前循环遍历集合,以获取或删除元素
ListIterator :它扩展了Iterator,允许双向遍历list和修改元素
如果 ListIterator 比 Iterator 更强大,那么 sun java 开发人员应该只提供 ListIterator 的实现并弃用迭代器。为什么 Iterator 仍然存在于 java 中?使用 Iterator 比使用 ListIterator 有什么优势吗?
最佳答案
这是因为不是所有的集合都支持前向和后向迭代。 ListIterators
专门用于具有列表语义的集合,即它们定义了对元素的排序。某些集合类型(例如 Sets
)不定义其元素的顺序,因此 ListIterator
对它们没有意义。
当迭代器实现需要保持足够的状态以支持前向和后向迭代以及就地修改时,也会产生额外的开销。通过同时支持 Iterator
和 ListIterator
,可以在需要时使用轻量级的 Iterator
实现,而使用较重的 ListIterator
适用于需要额外功能的情况。
关于java - 为什么迭代器仍然存在于java中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6659840/