【发布时间】:2016-05-26 04:39:08
【问题描述】:
据我了解,ListIterator 为列表提供了比 Iterator 更多的功能。如果是这样,为什么要使用 Iterator 呢?它也有优化或性能因素吗?
【问题讨论】:
-
只有列表有 ListIterator。集合和集合只有一个迭代器
标签: java optimization iterator listiterator
据我了解,ListIterator 为列表提供了比 Iterator 更多的功能。如果是这样,为什么要使用 Iterator 呢?它也有优化或性能因素吗?
【问题讨论】:
标签: java optimization iterator listiterator
通常,您的代码对代码和数据结构的其他部分了解得越少越好。原因很简单:这简化了修改。
确实,Collection 比 Iterator 更强大,List 比 Collection 更强大。
但是Iterator 可以从很多数据结构中获得,所以如果您使用从(例如)列表中获得的迭代器,您可以更改代码并从(例如)数据库中获取迭代器而不更改代码与迭代器一起使用。
【讨论】:
Iterable?
Collection。 Iterable 只是 Iterator 的访问器,带有名为 for(:) 的附加编译器魔法
List 是Collection 是Iterable,因此List“比”Collection 更强大,就像Collection“比”Iterable 更强大。 ..
使用 ListIterator 来表达以特定顺序进行迭代的要求。使用 Iterator 表示顺序无关紧要。
一般来说,我认为使用迭代器会使代码难以阅读。我不知道您的用例,但在大多数情况下,使用增强的 for 循环或 Java 8 流等函数式方法是有意义的。
【讨论】:
如果您需要ListIterator 的功能,那么您可以使用它。同时,您限制自己在该特定位置对Lists 进行操作。
现在,如果您实现了一些真正基于List 的操作,您实际上希望只对Lists 进行操作,所以这可能对您没有限制。
但是,如果您真的不需要 ListIterator 的特殊功能但 Iterator 就足够了,那么更喜欢使用普通的 Iterator;这使您不仅可以对Lists 进行操作,还可以对实现Iterable 的任何数据结构进行操作,包括各种Collections。这使您的代码更通用、更灵活。
【讨论】: