【问题标题】:What is the benefit of using Iterator instead of ListIterator for ArrayList?ArrayList 使用 Iterator 而不是 ListIterator 有什么好处?
【发布时间】:2016-05-26 04:39:08
【问题描述】:

据我了解,ListIterator 为列表提供了比 Iterator 更多的功能。如果是这样,为什么要使用 Iterator 呢?它也有优化或性能因素吗?

【问题讨论】:

标签: java optimization iterator listiterator


【解决方案1】:

通常,您的代码对代码和数据结构的其他部分了解得越少越好。原因很简单:这简化了修改。

确实,CollectionIterator 更强大,ListCollection 更强大。

但是Iterator 可以从很多数据结构中获得,所以如果您使用从(例如)列表中获得的迭代器,您可以更改代码并从(例如)数据库中获取迭代器而不更改代码与迭代器一起使用。

【讨论】:

  • “比迭代器更强大” - 你的意思是Iterable
  • 不,我的意思是Collection。 Iterable 只是 Iterator 的访问器,带有名为 for(:) 的附加编译器魔法
  • ListCollectionIterable,因此List“比”Collection 更强大,就像Collection“比”Iterable 更强大。 ..
【解决方案2】:

使用 ListIterator 来表达以特定顺序进行迭代的要求。使用 Iterator 表示顺序无关紧要。

一般来说,我认为使用迭代器会使代码难以阅读。我不知道您的用例,但在大多数情况下,使用增强的 for 循环或 Java 8 流等函数式方法是有意义的。

【讨论】:

    【解决方案3】:

    如果您需要ListIterator 的功能,那么您可以使用它。同时,您限制自己在该特定位置对Lists 进行操作。

    现在,如果您实现了一些真正基于List 的操作,您实际上希望只对Lists 进行操作,所以这可能对您没有限制。

    但是,如果您真的不需要 ListIterator 的特殊功能但 Iterator 就足够了,那么更喜欢使用普通的 Iterator;这使您不仅可以对Lists 进行操作,还可以对实现Iterable 的任何数据结构进行操作,包括各种Collections。这使您的代码更通用、更灵活。

    【讨论】:

      猜你喜欢
      • 2010-09-14
      • 2022-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      • 2016-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多