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