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) 在下一个next()调用将返回的元素前面,将obj插入列表中。 |
| 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+
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP