您的位置:

List遍历的几种方式

一、普通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));