迭代器
迭代器是用于遍历集合的工具。在 Java 里,Iterator
接口为集合元素的遍历提供了支持。通过使用迭代器,能够按照顺序逐个访问集合中的元素,同时还可以在遍历过程中对元素进行移除操作。
迭代器的基本使用
下面是使用迭代器遍历List
集合的示例代码:
java
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorExample {
public static void main(String[] args) {
// 创建一个 List 集合
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
// 获取迭代器
Iterator<String> iterator = list.iterator();
// 使用迭代器遍历集合
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}
}
}
在上述代码中:
- 首先创建了一个
ArrayList
集合,并且添加了几个元素。 - 接着调用集合的
iterator()
方法获取一个迭代器对象。 - 然后运用
while
循环和迭代器的hasNext()
方法来检查是否还有下一个元素,若有则使用next()
方法获取该元素并打印。
迭代器的移除操作
迭代器还提供了remove()
方法,可在遍历过程中移除元素。示例如下:
java
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorRemoveExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
if (element.equals("banana")) {
iterator.remove();
}
}
System.out.println(list);
}
}
在这个示例中,当遍历到元素"banana"
时,调用iterator.remove()
方法将其从集合里移除。
ListIterator
对于List
集合,还有一种特殊的迭代器ListIterator
,它不仅具备Iterator
的功能,还能进行双向遍历以及在遍历过程中添加元素。示例如下:
java
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class ListIteratorExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
ListIterator<String> listIterator = list.listIterator();
// 正向遍历
while (listIterator.hasNext()) {
System.out.println(listIterator.next());
}
// 反向遍历
while (listIterator.hasPrevious()) {
System.out.println(listIterator.previous());
}
// 在遍历过程中添加元素
listIterator = list.listIterator();
while (listIterator.hasNext()) {
if (listIterator.next().equals("banana")) {
listIterator.add("date");
}
}
System.out.println(list);
}
}
在上述代码中,先使用ListIterator
进行正向遍历,再进行反向遍历,最后在遍历过程中当遇到元素"banana"
时添加元素"date"
。