Java中的迭代器是什么?

通常,您将需要循环浏览集合中的元素。例如,您可能要显示每个元素。最简单的方法是使用迭代器,该迭代器是实现Iterator或ListIterator接口的对象。

迭代器使您可以循环浏览集合,获取或删除元素。ListIterator扩展了Iterator,以允许双向遍历列表和修改元素。

您必须先获得一个,才能通过迭代器访问集合。每个集合类都提供一个iterator()方法,该方法将迭代器返回到集合的开头。通过使用此迭代器对象,您可以访问集合中的每个元素,一次访问一个元素。

通常,要使用迭代器循环浏览集合的内容,请按照以下步骤操作:

  • 通过调用集合的iterator()方法,获得一个到集合开始处的迭代器。

  • 设置一个调用hasNext()的循环。只要hasNext()返回true,就使循环迭代。

  • 在循环中,通过调用next()获得每个元素。

  • 对于实现List的集合,您还可以通过调用ListIterator获得一个迭代器。

示例

这是同时演示Iterator和ListIterator的示例。它使用ArrayList对象,但是一般原则适用于任何类型的集合。

当然,ListIterator仅适用于实现List接口的那些集合。

import java.util.*;
public class IteratorDemo {

   public static void main(String args[]) {
      //创建一个数组列表
      ArrayList al = new ArrayList();
     
      //将元素添加到数组列表
      al.add("C");
      al.add("A");
      al.add("E");
      al.add("B");
      al.add("D");
      al.add("F");

      //使用迭代器显示al的内容
      System.out.print("Original contents of al: ");
      Iterator itr = al.iterator();
     
      while(itr.hasNext()) {
         Object element = itr.next();
         System.out.print(element + " ");
      }
      System.out.println();
     
      //修改要迭代的对象
      ListIterator litr = al.listIterator();
     
      while(litr.hasNext()) {
         Object element = litr.next();
         litr.set(element + "+");
      }
      System.out.print("Modified contents of al: ");
      itr = al.iterator();
     
      while(itr.hasNext()) {
         Object element = itr.next();
         System.out.print(element + " ");
      }
      System.out.println();

      //现在,向后显示列表
      System.out.print("Modified list backwards: ");
     
      while(litr.hasPrevious()) {
         Object element = litr.previous();
         System.out.print(element + " ");
      }
      System.out.println();
   }
}

输出结果

这将产生以下结果-

Original contents of al: C A E B D F
Modified contents of al: C+ A+ E+ B+ D+ F+
Modified list backwards: F+ D+ B+ E+ A+ C+