【发布时间】:2011-07-12 05:29:37
【问题描述】:
据我所知,Iterator 和 ListIterator 之间的主要区别是
迭代器:使您能够仅向前循环遍历集合,以获取或删除元素
ListIterator :它扩展了Iterator,允许列表的双向遍历和元素的修改
如果 ListIterator 比 Iterator 更强大,那么 sun java 开发人员应该只提供 ListIterator 的实现并弃用迭代器。为什么Iterator仍然存在于java中?使用 Iterator 比使用 ListIterator 有什么优势吗?
【问题讨论】:
-
单链表与双链表的参数相同。
-
单链表与双链表的答案相同。双向链表具有较高的内存和计算开销,这并不适用于所有情况。
-
答案不太一样。迭代器可以在您自己的自定义类中使用,它通常是驱动迭代器设计的访问契约,而不是迭代器本身的开销——例如网络流的迭代器必须是只向前的。对于单点与双点列表,选择纯粹是为了开销。
-
决不能随意弃用和删除。想想如果每次添加“更强大”的东西时删除“不太强大”的东西都会破坏的所有代码。永远不要低估保持向后兼容性的价值。
-
@aroth:好吧,考虑到
ListIterator继承自Iterator,我不确定你是否真的可以弃用它,即使你想这样做:)