一.遍历集合的四种方式
1.以ArrayList为例展示一下遍历集合的四种方式,先初始化一个ArrayList
List<Integer> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
list.add(i);
}
2.遍历集合方式一:使用普通for循环:
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
3.遍历集合方式二:增强for循环,底层就是迭代器:
for (Integer i:list){
System.out.println(i);
}
4.遍历集合方式三:迭代器
Iterator<Integer> iterator = list.iterator();
while(iterator.hasNext()){
Integer i = iterator.next();
System.out.println(i);
}
5.遍历集合方式四:使用Iterable接口中jdk1.8新增的default方法forEach+lambda表达式
list.forEach((i) -> {System.out.println(i); });//普通lambda
list.forEach(i -> System.out.println(i));//只有一行语句时可以简写的形式
list.forEach(System.out :: println);//方法引用
二.四种迭代方式对比
(1)普通for循环
此种方式在遍历ArrayList时效率会高一些,因为ArrayList底层使用的是数组实现的,所以可以认为ArrayList中的元素都是有下标的,而此种普通for循环中的变量i可以快速的定位到ArrayList中的元素。
(2)增强for循环和迭代器
可以认为增强for循环是迭代器的一种简便的写法,而迭代器比较适合遍历LinkedList,因为它底层使用的是链表的数据结构。
(3)使用forEach方法+lambda表达式
如果使用的是jdk8以上的版本,那么建议使用此种方式,该方式内部默认的使用增强for循环去遍历集合,不过在ArrayList类中重写了forEach方法,里面使用了普通的for循环去遍历。不管使用哪一种,这种方式底层会选择最优的遍历方式