Java 中 Iterator 和 ListIterator 的区别
javaobject oriented programmingprogramming更新于 2025/11/21 19:24:17
Java 提供了这两个接口来逐个遍历存储在集合中的数据。迭代器和列表迭代器的内部实现使它们有所不同,但两个迭代器的主要目的是相同的。
以下是 Iterator 和 ListIterator 之间的重要区别。
| Sr.否。 | 键 | 迭代器 | ListIterator |
|---|---|---|---|
| 1 | 适用 | 迭代器可用于遍历任何集合,无论集合的类型如何。 | 列表迭代器只能用于迭代列表集合实现的类,例如arraylist,linkedlist等。 |
| 2 | 调用 | 如上所述,必须使用 Iterator 来枚举所有 Collections 实现的接口(如 Set、List、Queue、Deque)中的元素,以及所有 Map 接口实现的类中的元素。通过调用 Collection 接口的 iterator() 方法可以创建 Iterator 对象。 | 另一方面,当我们想要枚举 List 的元素时,必须使用 ListIterator。可以通过调用 List 接口中的 listIterator() 方法创建 ListIterator 对象。 |
| 3 | 数据遍历 | 迭代器的数据遍历只能在一个方向上进行,因为 Iterator 只能向前遍历 | List 迭代器可以向前和向后遍历,这使得数据可以在两个方向上遍历。 |
| 4 | 删除 | 在迭代器的情况下,不允许删除元素。 | ListIterator 可以替换列表集合中的元素。 |
| 5 | 添加 | 在迭代器的情况下,不允许添加元素,因为它会引发 ConcurrentModificationException。 | ListIterator 可以随时轻松地在列表集合中添加元素。 |
| 6 | 修改 | 对于迭代器,不允许修改元素,因为它会引发 ConcurrentModificationException。 | ListIterator 可以随时通过调用 set() 方法轻松修改列表集合中的元素。 |
| 7 | 元素的索引 | 使用迭代器时,无法获取集合中遍历元素的索引。 | ListIterator 具有 nextIndex() 和 previousIndex() 等方法,可在遍历 List 时随时获取元素的索引。 |
Iterator 与 ListIterator 的示例
JavaTester.java
import java.io.*;
import java.util.*;
public class JavaTester {
public static void main(String[] args){
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
//Iterator
Iterator itr = list.iterator();
System.out.println("Iterator traversal:");
while (itr.hasNext())
System.out.print(itr.next() + " ");
System.out.println();
// ListIterator
ListIterator i = list.listIterator();
System.out.println("ListIterator Forward traversal:");
while (i.hasNext()){
System.out.print(i.next() + " ");
System.out.println();
System.out.println("ListIterator Backward traversal : ");
}
while (i.hasPrevious()){
System.out.print(i.previous() + " ");
System.out.println();
}
}
}
输出
Iterator traversal: 1 2 3 4 5 ListIterator Forward traversal: 1 ListIterator Backward traversal : 2 ListIterator Backward traversal : 3 ListIterator Backward traversal : 4 ListIterator Backward traversal : 5 ListIterator Backward traversal : 5 4 3 2 1
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

