一、什么是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),初始指向集合的第一个元素之前:
- 调用
hasnext()检查是否还有元素 - 调用
next()返回当前元素并移动指针 - 遍历结束时
hasnext()返回 false
五、使用注意事项
1、避免并发修改异常
// 错误做法:直接使用集合的remove方法
for (string s : list) {
if (s.equals("b")) {
list.remove(s); // 会抛出concurrentmodificationexception
}
}
// 正确做法:使用iterator的remove方法
iterator<string> iterator = list.iterator();
while (iterator.hasnext()) {
string s = iterator.next();
if ("b".equals(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迭代器的资料请关注代码网其它相关文章!
发表评论