遍历集合的四种方式
下面以ArrayList为例展示一下遍历集合的四种方式,首先初始化一个ArrayList并填充一些测试数据
遍历集合方式一:使用普通for循环:
遍历集合方式二:增强for循环,底层就是迭代器:
遍历集合方式三:迭代器
遍历集合方式四:使用Iterable接口中jdk1.8新增的default方法forEach+lambda表达式
四种迭代方式对比
普通for循环
此种方式在遍历ArrayList时效率会高一些,因为ArrayList底层使用的是数组实现的,所以可以认为ArrayList中的元素都是有下标的,而此种普通for循环中的变量i可以快速的定位到ArrayList中的元素。
增强for循环和迭代器
可以认为增强for循环是迭代器的一种简便的写法,而迭代器比较适合遍历LinkedList,因为它底层使用的是链表的数据结构。
使用forEach方法+lambda表达式
如果你使用的是jdk8以上的版本,那么建议使用此种方式,该方式内部默认的使用增强for循环去遍历集合,不过在ArrayList类中重写了forEach方法,里面使用了普通的for循环去遍历。不管你使用哪一种,这种方式底层会选择最优的遍历方式
Iterable接口中的forEach方法源码:
ArrayList中重写的forEach方法源码:
因此建议使用jdk8中Iterable接口中新增的forEach方法遍历集合。