首页 > Java > java教程 > 正文

Java里如何使用ListIterator遍历和修改列表_ListIterator操作解析

P粉602998670
发布: 2025-12-01 06:39:11
原创
544人浏览过
ListIterator是Java中专用于List的双向迭代器,支持前后遍历及遍历时安全增删改元素。通过list.listIterator()获取实例,可指定起始索引。使用hasNext()、next()正向遍历,hasPrevious()、previous()反向遍历,需先移动到末尾再反向。提供add(E e)在当前指针前插入,set(E e)替换上一次访问的元素,remove()删除上一次访问的元素。注意:调用set或remove前必须先调用next或previous,否则抛IllegalStateException;add无此限制。适用于需双向操作或边遍历边修改的场景。

java里如何使用listiterator遍历和修改列表_listiterator操作解析

ListIterator 是 Java 中用于遍历和修改列表的双向迭代器,相比普通的 Iterator,它支持前后两个方向遍历,并且可以在遍历过程中安全地添加、修改或删除元素。它是 List 接口特有的工具,不能用于 Set 或其他集合类型。

获取 ListIterator 实例

要使用 ListIterator,必须从实现了 List 接口的集合(如 ArrayList、LinkedList)中获取。通过调用 list 的 listIterator() 方法即可获得实例。

示例:
import java.util.*;

List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");

ListIterator<String> iterator = list.listIterator();
登录后复制

也可以指定起始位置:
ListIterator<string> iterator = list.listIterator(1);</string> 从索引 1 开始遍历。

双向遍历:向前与向后移动

ListIterator 支持从前往后和从后往前遍历。

  • hasNext()next():判断是否存在下一个元素,并返回它,同时指针后移。
  • hasPrevious()previous():判断是否存在前一个元素,并返回它,同时指针前移。
正向遍历示例:
while (iterator.hasNext()) {
    String element = iterator.next();
    System.out.println("正向: " + element);
}
登录后复制
反向遍历示例(需先走到末尾):
// 先正向走完
while (iterator.hasNext()) {
    iterator.next();
}

// 再反向输出
while (iterator.hasPrevious()) {
    String element = iterator.previous();
    System.out.println("反向: " + element);
}
登录后复制

在遍历中修改列表

ListIterator 允许在不抛出 ConcurrentModificationException 的情况下对列表进行增删改操作。

Riffusion
Riffusion

AI生成不同风格的音乐

Riffusion 87
查看详情 Riffusion

立即学习Java免费学习笔记(深入)”;

  • add(E e):在当前指针位置前插入元素。
  • set(E e):替换最后一次调用 next() 或 previous() 返回的元素。
  • remove():删除最后一次调用 next() 或 previous() 返回的元素。
修改操作示例:
List<Integer> numbers = new ArrayList<>(Arrays.asList(1, 2, 3));
ListIterator<Integer> it = numbers.listIterator();

while (it.hasNext()) {
    Integer value = it.next();
    if (value == 2) {
        it.set(20);  // 修改为 20
    }
    if (value == 3) {
        it.add(4);   // 在 3 后插入 4
    }
}
System.out.println(numbers); // 输出: [1, 20, 3, 4]
登录后复制

注意事项与常见误区

使用 ListIterator 时需要注意以下几点:

  • 调用 set()remove() 前必须先调用 next()previous(),否则会抛出 IllegalStateException。
  • add() 不受此限制,可在任意位置插入。
  • 每次调用 next()previous() 后,set()remove() 都作用于该次返回的元素。
  • 多个修改操作之间可以连续执行,但需注意指针位置变化。

基本上就这些。ListIterator 提供了比普通迭代器更灵活的操作能力,特别适合需要双向访问或边遍历边修改的场景。只要注意调用顺序和指针状态,就能安全高效地使用。

以上就是Java里如何使用ListIterator遍历和修改列表_ListIterator操作解析的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号