一、普通for循环遍历list
以往我们习惯使用for循环遍历数组或者List集合。在ArrayList遍历中,我们通常采用普通的 for 循环,通过 size() 来获取 ArrayList 的长度,然后使用 get(i) 方法来获取指定下标的元素。
List
list = new ArrayList<>();
list.add("Apple");
list.add("Pear");
list.add("Peach");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
由于ArrayList内部是一个数组来存储元素,所以用普通for循环遍历时,会随着元素增多而逐渐变慢,因为每次get有一次定位的过程,数组越长,定位时间越长。
二、增强for循环遍历list
jdk1.5之后增加了"增强for语法",也称为 "foreach”。" 增强for循环可以遍历任何 collection 或者 数组,也称为 For-each 循环,语法如下:
List
list = new ArrayList<>();
list.add("Apple");
list.add("Pear");
list.add("Peach");
for (String fruit : list) {
System.out.println(fruit);
}
此时会直接取得元素值。
三、通过iterator循环来遍历list
基本步骤: 先让迭代器指向第一个元素,然后只要迭代器能够找到下一个元素就一直往下迭代。迭代器提供了remove() 方法,可以让程序员在迭代期间从 underlying collection 中 安全删除元素。
List
list = new ArrayList<>();
list.add("Apple");
list.add("Pear");
list.add("Peach");
Iterator
it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
四、forEach方法遍历list
Java8对collection接口增加了一个forEach()方法,它有一个Consumer类的参数。该方法可以让我们通过Lambda表达式来遍历集合,使代码变得简洁易读。
List
list = new ArrayList<>();
list.add("Apple");
list.add("Pear");
list.add("Peach");
list.forEach(fruit -> System.out.println(fruit));
五、高效的集合遍历方式
另一种比较高效的遍历方式是使用for each-loop中的变量进行遍历,可以使用流式编程进行效率优化。
List
list = new ArrayList<>();
list.add("Apple");
list.add("Pear");
list.add("Peach");
list.stream().forEach(fruit -> System.out.println(fruit));
六、使用parallelStream方法遍历list
在使用Java 8中新增的方法parallelStream时,可以开启并行流遍历,加快集合遍历速度。parallelStream是在Stream中使用的,只有顺序存在依赖性才能被并行计算,stream与parallelStream的切换并不影响数据内容,只会影响遍历方式。
List
list = new ArrayList<>();
list.add("Apple");
list.add("Pear");
list.add("Peach");
list.parallelStream().forEach(fruit -> System.out.println(fruit));