扫码关注微信公众号

回复“面试手册”,获取本站PDF版

回复“简历”,获取高质量简历模板

回复“加群”,加入程序员交流群

回复“电子书”,获取程序员类电子书

当前位置: Java > Java集合高频面试题 > 11.遍历一个List有哪些不同的方式?

先说一下常见的元素在内存中的存储方式,主要有两种:

  1. 顺序存储(Random Access):相邻的数据元素在内存中的位置也是相邻的,可以根据元素的位置(如ArrayList中的下表)读取元素。
  2. 链式存储(Sequential Access):每个数据元素包含它下一个元素的内存地址,在内存中不要求相邻。例如LinkedList

主要的遍历方式主要有三种:

  1. for循环遍历:遍历者自己在集合外部维护一个计数器,依次读取每一个位置的元素。
  2. Iterator遍历:基于顺序存储集合的Iterator可以直接按位置访问数据。基于链式存储集合的Iterator,需要保存当前遍历的位置,然后根据当前位置来向前或者向后移动指针。
  3. foreach遍历:foreach 内部也是采用了Iterator的方式实现,但使用时不需要显示地声明Iterator

那么对于以上三种遍历方式应该如何选取呢?

在Java集合框架中,提供了一个RandomAccess接口,该接口没有方法,只是一个标记。通常用来标记List的实现是否支持RandomAccess。所以在遍历时,可以先判断是否支持RandomAccesslist instanceof RandomAccess),如果支持可用 for循环遍历,否则建议用Iteratorforeach遍历。


点击面试手册,获取本站面试手册PDF完整版