
扫码关注微信公众号
回复“面试手册”,获取本站PDF版
回复“简历”,获取高质量简历模板
回复“加群”,加入程序员交流群
回复“电子书”,获取程序员类电子书
当前位置:
Java > Java集合高频面试题 > 11.遍历一个List有哪些不同的方式?
本文链接:https://www.mianshi.online/java-collection-list-traversal.html
先说一下常见的元素在内存中的存储方式,主要有两种:
- 顺序存储(Random Access):相邻的数据元素在内存中的位置也是相邻的,可以根据元素的位置(如
ArrayList
中的下表)读取元素。 - 链式存储(Sequential Access):每个数据元素包含它下一个元素的内存地址,在内存中不要求相邻。例如
LinkedList
。
主要的遍历方式主要有三种:
for
循环遍历:遍历者自己在集合外部维护一个计数器,依次读取每一个位置的元素。Iterator
遍历:基于顺序存储集合的Iterator
可以直接按位置访问数据。基于链式存储集合的Iterator
,需要保存当前遍历的位置,然后根据当前位置来向前或者向后移动指针。foreach
遍历:foreach
内部也是采用了Iterator
的方式实现,但使用时不需要显示地声明Iterator
。
那么对于以上三种遍历方式应该如何选取呢?
在Java集合框架中,提供了一个RandomAccess
接口,该接口没有方法,只是一个标记。通常用来标记List
的实现是否支持RandomAccess
。所以在遍历时,可以先判断是否支持RandomAccess
(list instanceof RandomAccess
),如果支持可用 for
循环遍历,否则建议用Iterator
或 foreach
遍历。
本站链接:https://www.mianshi.online,如需勘误或投稿,请联系微信:lurenzhang888
点击面试手册,获取本站面试手册PDF完整版