遍历方式有以下几种:
1、for 循环遍历,基于计数器。在集合外部维护一个计数器,然后依次读取每一个位置的元素,当读取到最后一个元素后停止。
2、迭代器遍历,Iterator。 Iterator是面向对象的一个设计模式,目的是屏蔽不同数据集合的特点,统一遍历集合的接口。Java 在 Collections 中支持了Iterator模式。
3、foreach循环遍历。foreach 内部也是采用了 Iterator 的方式实现,使用时不需要显式声明 Iterator 或计数器。优点是代码简洁,不易出错;缺点是只能做简单的遍历,不能在遍历过程中操作数据集合,例如删除、替换。
最佳实践:
JavaCollections框架中提供了一个 RandomAccess接口,用来标记List 实现是否支持 Random Access。
1、如果一个数据集合实现了该接口,就意味着它支持 Random Access,按位置读取元素的平均时间复杂度为O(1),如 ArrayList。
2、如果没有实现该接口,表示不支持 Random Access,如LinkedList。
3、推荐的做法就是,支持 Random Access 的列表可用 for 循环遍历,否则建议用 Iterator或foreach 遍历。
Was this helpful?
0 / 0