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+