Java 对于ArrayList,使用迭代器而不是ListIterator有什么好处?

Java 对于ArrayList,使用迭代器而不是ListIterator有什么好处?,java,optimization,iterator,listiterator,Java,Optimization,Iterator,Listiterator,据我所知,ListIterator提供了比列表迭代器多得多的功能。如果是这样,为什么要使用迭代器呢?还有优化或性能因素吗?通常,代码对代码和数据结构的其他部分了解得越少越好。原因很简单:这简化了修改 实际上,集合比迭代器更强大,列表比集合更强大 但是,Iterator可以从很多数据结构中获得,因此,如果您使用的是从(例如)列表中获得的迭代器,那么您可以更改代码并从(例如)数据库中获得迭代器,而无需更改使用迭代器的代码 通常,代码对代码其他部分和数据结构的了解越少越好。原因很简单:这简化了修改 实

据我所知,ListIterator提供了比列表迭代器多得多的功能。如果是这样,为什么要使用迭代器呢?还有优化或性能因素吗?

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

实际上,
集合
迭代器
更强大,
列表
集合
更强大


但是,
Iterator
可以从很多数据结构中获得,因此,如果您使用的是从(例如)列表中获得的迭代器,那么您可以更改代码并从(例如)数据库中获得迭代器,而无需更改使用迭代器的代码

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

实际上,
集合
迭代器
更强大,
列表
集合
更强大


但是,
Iterator
可以从很多数据结构中获得,因此,如果您使用的是从(例如)列表中获得的迭代器,那么您可以更改代码并从(例如)数据库中获得迭代器,而无需更改使用迭代器的代码

使用ListIterator来表示按特定顺序进行迭代的需求。使用迭代器表示顺序无关紧要


一般来说,我认为迭代器的使用使代码难以阅读。我不知道您的用例,但在大多数情况下,使用增强的for循环或功能性方法(如Java 8 streams)是有意义的。

使用ListIterator来表示按特定顺序迭代的需求。使用迭代器表示顺序无关紧要


一般来说,我认为迭代器的使用使代码难以阅读。我不知道您的用例,但在大多数情况下,使用增强的for循环或功能性方法(如Java 8 streams)是有意义的。

如果您需要
列表迭代器的功能,那么您可以使用它。同时,您限制自己在该特定位置操作
List
s

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


但是,如果您确实不需要
列表迭代器
的特殊功能,但
迭代器
就足够了,那么最好使用普通的
迭代器
;这使您不仅可以对
列表
进行操作,还可以对实现
Iterable
的任何数据结构进行操作,包括各种
集合
。这使您的代码更通用,使用更灵活。

如果您需要
列表迭代器的功能,那么您可以使用它。同时,您限制自己在该特定位置操作
List
s

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


但是,如果您确实不需要
列表迭代器
的特殊功能,但
迭代器
就足够了,那么最好使用普通的
迭代器
;这使您不仅可以对
列表
进行操作,还可以对实现
Iterable
的任何数据结构进行操作,包括各种
集合
。这使您的代码更通用,使用更灵活。

您可以参考:只有列表有ListIterator。集合和集合只有一个迭代器可能与您可以引用的重复项:只有列表有一个ListIterator。集合和集合只有“比迭代器更强大”的迭代器或可能的副本-你是说
Iterable
?不,我是说
Collection
。Iterable只是(:)
列表的一个
集合的一个
迭代器的一个访问器,因此
列表
集合
更强大,就像
集合
Iterable
更强大一样。。。“比迭代器更强大”-你是说
Iterable
?不,我是说
集合
。Iterable只是
迭代器
的一个访问器,它有一个名为(:)
List
的额外编译器魔法,它是
集合
Iterable
,因此
列表
比“
Collection
就像
Collection
”比“
Iterable
”更强大一样。。。