Java 如何使用迭代器

Java 如何使用迭代器

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

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

在通过迭代器访问集合之前,您必须获取一个迭代器。每个集合类都提供了一个iterator()方法,返回集合的起始处的迭代器。通过使用这个迭代器对象,您可以逐个访问集合中的每个元素。

通常,要使用迭代器循环遍历集合的内容,请按照以下步骤进行:

  • 通过调用集合的iterator()方法获取一个迭代器到集合的起始位置。

  • 设置循环,调用hasNext()方法并使循环迭代,只要hasNext()返回true。

  • 在循环内,通过调用next()方法获取每个元素。

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

迭代器声明的方法

序号 方法与描述
1 boolean hasNext( ) 如果还有更多元素,则返回true。否则,返回false。
2 Object next( ) 返回下一个元素。如果没有下一个元素,则抛出NoSuchElementException异常。
3 void remove( ) 移除当前元素。如果在调用remove( )之前没有调用next( ),则抛出IllegalStateException异常。

ListIterator 声明的方法

序号 方法与描述
1 void add(Object obj) 在列表中obj对象之前插入元素,该元素将在下一次调用next()时返回。
2 boolean hasNext( ) 如果存在下一个元素,则返回true。否则,返回false。
3 boolean hasPrevious( ) 如果存在上一个元素,则返回true。否则,返回false。
4 Object next( ) 返回下一个元素。如果没有下一个元素,则会抛出NoSuchElementException异常。
5 int nextIndex( ) 返回下一个元素的索引。如果没有下一个元素,则返回列表的大小。
6 Object previous( ) 返回上一个元素。如果没有上一个元素,则会抛出NoSuchElementException异常。
7 int previousIndex( ) 返回上一个元素的索引。如果没有上一个元素,则返回-1。
8 void remove( ) 从列表中删除当前元素。如果在调用next()或previous()之前调用remove(),则会抛出IllegalStateException异常。
9 void set(Object obj) 将obj赋值给当前元素。这是最后一次调用next()或previous()返回的元素。

示例

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

当然,ListIterator只适用于实现了List接口的集合。

import java.util.*;
public class IteratorDemo {

   public static void main(String args[]) {
      // Create an array list
      ArrayList al = new ArrayList();

      // add elements to the array list
      al.add("C");
      al.add("A");
      al.add("E");
      al.add("B");
      al.add("D");
      al.add("F");

      // Use iterator to display contents of 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();

      // Modify objects being iterated
      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();

      // Now, display the list backwards
      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+

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程