目录
- 一、什么是Iterator
- 二、Iterator的核心方法
- 三、基本使用示例
- 四、Iterator的工作原理
- 五、使用注意事项
- 六、Iterator vs增强for循环
- 七、适用集合类型
- 八、Java8+替代方案
- 九、Iterator设计模式
- 十、总结
一、什么是Iterator
Iterator(迭代器)是 Java 集合框架中用于遍历集合元素的接口,它是一个"指针"或"游标",用于逐个访问集合中的元素,而无需关心集合的内部结构。
二、Iterator的核心方法
| 方法 | 作用 | 使用频率 |
|---|---|---|
boolean hasNext() | 判断是否还有下一个元素 | 高 |
E next() | 返回下一个元素并移动指针 | 高 |
void remove() | 删除当前元素(最近一次 next() 返回的元素) | 中 |
default void forEachRemaining(Consumer<? super E> action) | Java 8+,对剩余元素执行操作 | 中 |
三、基本使用示例
遍历 List
List<String> list = Arrays.asList("A", "B", "C");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}
四、Iterator的工作原理
Iterator 内部维护一个指针(cursor),初始指向集合的第一个元素之前:
- 调用
has编程客栈Next()检查是否还有元素 - 调用
next()返回当前元素并移动指针 - 遍历结束时
has编程客栈Next()返回 false
五、使用注意事项
1、避免并发修改异常
// 错误做法:直接使用集合的remove方法
for (String s : list) {
if (s.equals("B")) {
list.remove(s); // 会抛出ConcurrentModificationException
}
}
// 正确做法:使用Iterator的remove方法
Iterator<Standroidring> iterator = list.iterator();
while (iterator.hasNext()) {
String s = iterator.n编程ext();
if ("B".equa编程客栈ls(s)) {
iterator.remove(); // 安全删除
}
}
2、remove()必须在next()之后调用
必须先调用next()获取元素,然后才能调用remove()删除该元素。
3、一个next()对应一个remove()
不能连续调用两次remove(),每次调用next()后只能调用一次remove()。
六、Iterator vs增强for循环
| 对比项 | Iterator | 增强 for 循环 |
|---|---|---|
| 语法 | 手动写 while 循环 | for (T t : collection) |
| 删除元素 | 支持(用 iterator.remove()) | 不支持(会抛异常) |
| 灵活性 | 高(可控制流程) | 低(只用于遍历) |
| 底层实现 | 直接使用 Iterator | 编译后转换为 Iterator |
选择建议:只需遍历时用增强 for,需要删除元素时用 Iterator。
七、适用集合类型
Iterator 可用于所有实现 Iterable 接口的集合:
- List(ArrayList, LinkedList)
- Set(HashSet, TreeSet)
- Queue
- Map 的
keySet()、values()、entrySet()
八、Java8+替代方案
1.forEach+Lambda
list.forEach(System.out::println);
2.Stream API
list.stream()
.filter(s -> !s.equals("B"))
.forEach(System.out::println);
现代Java开发推荐使用这些更简洁的函数式编程方式。
九、Iterator设计模式
Iterator是"迭代器模式"的经典实现,其核心思想是将遍历逻辑与集合分离,降低耦合度,让用户无需了解集合内部结构。
十、总结
| 关键点 | 说明 |
|---|---|
| 作用 | 遍历集合元素 |
| 核心方法 | hasNext(), next(), remove() |
| 删除元素 | 必须使用 iterator.remove() |
| 并发修改 | 直接调用集合的 remove/add 会抛异常 |
| 增强 for 底层 | 基于 Iterator 实现 |
| 现代替代 | forEach(), Stream API |
口诀:"遍历用 foreach,删除用 iterator"
Iterator 是 Java 集合框架的基础,理解其原理和正确使用方式对于Java开发者至关重要。
以上就是Java集合之Iterator迭代器实现代码解析的详细内容,更多关于Java Iterator迭代器的资料请关注编程客栈(www.devze.com)其它相关文章!
加载中,请稍侯......
精彩评论