如何迭代Java ArrayList

时间:2020-01-09 10:35:00  来源:igfitidea点击:

在本文中,我们将介绍在Java中迭代ArrayList的不同方法。迭代ArrayList的选项如下:

  • 使用普通的for循环
  • 使用For-Each循环(Advanced for循环),可从Java 5获得
  • 使用Iterator或者ListIterator(仅当我们要向前和向后迭代而不是顺序循环ArrayList时,才使用ListIterator)。
  • 使用Java 8提供的forEach语句

在Java示例中迭代ArrayList

这是一个Java示例代码,显示了上述所有循环ArrayList的方法。

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class ArrayListIteration {
  public static void main(String[] args) {
    List<String> nameList = new ArrayList<String>();
    // adding elements
    nameList.add("Adam");
    nameList.add("Amy");
    nameList.add("Jim");
    nameList.add("Leo");
		
    System.out.println("**Iterating using normal for loop**");
    for(int i = 0; i < nameList.size(); i++){
      System.out.println("Name-- " + nameList.get(i));
    }
    System.out.println("**Iterating using For-Each loop**");
    for(String name : nameList){
      System.out.println("Name- " + name);
    }
    System.out.println("**Iterating using Iterator**");
    // getting iterator
    Iterator itr = nameList.iterator();
    while(itr.hasNext()){
      System.out.println("Name- " + itr.next());
    }
    System.out.println("**Iterating using ListIterator**");
    ListIterator ltr = nameList.listIterator();
    while(ltr.hasNext()){
      System.out.println("Name- " + ltr.next());
    }
    System.out.println("**Iterating using forEach statement**");
    nameList.forEach((n)->System.out.println("Name - " + n));
  }
}

输出:

**Iterating using normal for loop**
Name-- Adam
Name-- Amy
Name-- Jim
Name-- Leo
**Iterating using For-Each loop**
Name- Adam
Name- Amy
Name- Jim
Name- Leo
**Iterating using Iterator**
Name- Adam
Name- Amy
Name- Jim
Name- Leo
**Iterating using ListIterator**
Name- Adam
Name- Amy
Name- Jim
Name- Leo
**Iterating using forEach statement**
Name - Adam
Name - Amy
Name - Jim
Name - Leo

因此,这些是用于在Java中迭代ArrayList的选项。如果只想按顺序遍历列表,则for-each循环是最佳选择。如果要在迭代时进行修改,则应使用Iterator或者ListIterator,否则对列表进行的任何结构修改都将导致抛出ConcurrentModificationException。