Iterator 和 ListIterator 都是 Java 集合框架中用于遍历集合元素的接口,但它们在功能和使用场景上有显著差异。以下是两者的详细对比分析:
一、核心区别总览
| 特性 | Iterator | ListIterator |
|---|---|---|
| 继承关系 | 顶级遍历接口 | 继承自 Iterator |
| 适用范围 | 所有 Collection | 仅 List 及其实现类 |
| 遍历方向 | 单向(只能向前) | 双向(可向前或向后) |
| 元素修改 | 仅支持删除(remove()) | 支持增删改(add()/remove()/set()) |
| 位置信息 | 无当前位置概念 | 可获取前后索引(nextIndex()/previousIndex()) |
| 实现类支持 | 所有集合的迭代器 | ArrayList, LinkedList, Vector 等 List 实现 |
二、功能对比详解
1. 基本遍历能力
Iterator 示例:
List<String> list = Arrays.asList("A", "B", "C");
Iterator<String> it = list.iterator();
while(it.hasNext()) {
String item = it.next();
System.out.println(item);
}
ListIterator 示例:
List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));
ListIterator<String> lit = list.listIterator();
// 正向遍历
while(lit.hasNext()) {
System.out.print(lit.next() + " "); // 输出:A B C
}
// 反向遍历
while(lit.hasPrevious()) {
System.out.print(lit.previous() + " "); // 输出:C B A
}
2. 修改操作对比
| 操作 | Iterator | ListIterator |
|---|---|---|
| 删除元素 | remove() |
remove() |
| 添加元素 | 不支持 | add(E e) |
| 修改元素 | 不支持 | set(E e) |

最低0.47元/天 解锁文章
1243

被折叠的 条评论
为什么被折叠?



