Iterator用于单向遍历所有Collection集合,支持遍历中删除元素;ListIterator仅适用于List,支持双向遍历、修改、添加元素,功能更强大但使用范围受限。

Java中的Iterator和ListIterator是两种用于遍历集合的接口,它们在功能和使用场景上有所不同。理解它们的区别和用法,有助于更高效地操作集合元素。
Iterator是最基础的迭代器,适用于所有Collection类型(如List、Set等),只能从前往后单向遍历。
常用方法包括:
hasNext():判断是否还有下一个元素next():获取下一个元素remove():删除当前迭代到的元素(可选操作)示例代码:
立即学习“Java免费学习笔记(深入)”;
List<String> list = Arrays.asList("a", "b", "c");
Iterator<String> it = list.iterator();
while (it.hasNext()) {
String item = it.next();
System.out.println(item);
// 安全删除
if ("b".equals(item)) {
it.remove();
}
}
注意:必须调用 next() 后才能调用 remove(),否则会抛出异常。
ListIterator是Iterator的增强版,仅适用于List实现类(如ArrayList、LinkedList),支持双向遍历和修改操作。
它除了具备Iterator的功能外,还提供以下方法:
hasPrevious():判断是否存在前一个元素previous():返回前一个元素nextIndex() 和 previousIndex():获取当前位置索引add(E e):在当前位置前插入元素set(E e):替换最后一次遍历返回的元素示例:逆序遍历并修改元素
List<String> list = new ArrayList<>(Arrays.asList("x", "y", "z"));
ListIterator<String> lit = list.listIterator(list.size()); // 从末尾开始
while (lit.hasPrevious()) {
String item = lit.previous();
System.out.println(item);
if ("y".equals(item)) {
lit.set("Y"); // 替换为大写
}
}
也可以从中间位置开始迭代,灵活控制遍历起点。
如果只是简单遍历或删除元素,Iterator足够使用,且兼容所有集合类型。
若需要反向遍历、添加元素或修改列表内容,应使用ListIterator,但前提是集合为List类型。
两者都不能保证线程安全,遍历时若有其他线程修改集合,会抛出ConcurrentModificationException。
以上就是Java Iterator和ListIterator如何迭代集合的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号