java - 为什么迭代器仍然存在于java中

标签 java iterator

据我所知,Iterator 和 ListIterator 之间的主要区别是

迭代器:使您能够仅向前循环遍历集合,以获取或删除元素

ListIterator :它扩展了Iterator,允许双向遍历list和修改元素

如果 ListIterator 比 Iterator 更强大,那么 sun java 开发人员应该只提供 ListIterator 的实现并弃用迭代器。为什么 Iterator 仍然存在于 java 中?使用 Iterator 比使用 ListIterator 有什么优势吗?

最佳答案

这是因为不是所有的集合都支持前向和后向迭代。 ListIterators 专门用于具有列表语义的集合,即它们定义了对元素的排序。某些集合类型(例如 Sets)定义其元素的顺序,因此 ListIterator 对它们没有意义。

当迭代器实现需要保持足够的状态以支持前向和后向迭代以及就地修改时,也会产生额外的开销。通过同时支持 IteratorListIterator ,可以在需要时使用轻量级的 Iterator 实现,而使用较重的 ListIterator 适用于需要额外功能的情况。

关于java - 为什么迭代器仍然存在于java中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6659840/

相关文章:

kotlin - 窥探迭代器

c++ - 类型别名和 operator<< 使用 ostream_iterator 重载导致无效操作数

python - 在 __next__() 中修改对象之前返回对象

c++ - 为什么 const_iterator 可以与 std::map::erase 一起使用

java - SHA1withRSA NoSuchAlgorithmException

java - 算法 - 查找循环世界中重叠间隔的持续时间(24 小时)

java - 想要使 "System.out.println()"将消息打印到 log4j

java - Spring/Hibernate 测试 : Inserting test data after DDL creation

java - 访问者如何以迭代器不会的方式访问 "define a new operation"?

java - 无法向 SQLite 中的表插入信息