238. Java 集合 - 使用 ListIterator 遍历 List 元素

文章目录

  • [238. Java 集合 - 使用 `ListIterator` 遍历 `List` 元素](#238. Java 集合 - 使用 ListIterator 遍历 List 元素)
      • [🛠️ `ListIterator` 的优势](#🛠️ ListIterator 的优势)
      • [📝 示例:使用 `set()` 修改列表中的元素](#📝 示例:使用 set() 修改列表中的元素)
      • 运行结果:
      • [🎯 常见 `ListIterator` 使用场景](#🎯 常见 ListIterator 使用场景)
      • [⚡ 小结](#⚡ 小结)

238. Java 集合 - 使用 ListIterator 遍历 List 元素

在 List 接口中,你可以使用 ListIterator 来更灵活地遍历元素。你可以通过 listIterator() 方法获得一个 ListIterator。此方法可以不带参数调用,或者传入一个整数索引,从该索引位置开始迭代。

🛠️ ListIterator 的优势

ListIterator 继承自常规的 Iterator,并且提供了更多功能,使得你可以双向遍历元素,并修改正在遍历的元素。主要新增方法如下:

  • hasPrevious() 和 previous():允许你反向迭代(从最后一个元素开始,向前移动)。
  • nextIndex() 和 previousIndex() :返回下一个 next() 调用或下一个 previous() 调用将返回的元素的索引。
  • set(element) :用于更新 next() 或 previous() 返回的上一个元素。如果在调用 next() 或 previous() 之前调用该方法,会抛出 IllegalStateException。

📝 示例:使用 set() 修改列表中的元素

java 复制代码
import java.util.*;

public class ListIteratorExample {
    public static void main(String[] args) {
        List<String> numbers = Arrays.asList("one", "two", "three");
        
        // 获取 ListIterator 实例
        for (ListIterator<String> iterator = numbers.listIterator(); iterator.hasNext();) {
            String nextElement = iterator.next();
            
            // 找到 "two" 并将其替换为 "2"
            if (Objects.equals(nextElement, "two")) {
                iterator.set("2");
            }
        }
        
        // 输出修改后的 List
        System.out.println("numbers = " + numbers);  // [one, 2, three]
    }
}

运行结果:

java 复制代码
numbers = [one, 2, three]

在这个例子中,我们使用 ListIterator 迭代 numbers 列表,查找到 "two" 后将其替换为 "2"。可以看到,set() 方法直接修改了该位置的元素。


🎯 常见 ListIterator 使用场景

  1. 双向遍历: ListIterator 支持正向和反向遍历,这是普通 Iterator 无法做到的。你可以先正向遍历,遇到某个元素后反向遍历。
  2. 修改遍历元素: ListIterator 的 set() 方法使得我们可以在遍历时直接修改元素,避免了先取出再修改的麻烦。
  3. 获取索引: 通过 nextIndex() 和 previousIndex(),你可以在遍历时随时获取当前元素的索引。这对于某些需要索引位置的场景非常有用。

⚡ 小结

  • ListIterator 继承了 Iterator,使得你可以双向遍历 ,并且通过 set() 方法直接修改正在遍历的元素。
  • 常见方法:
    • hasPrevious():检查是否有前一个元素
    • previous():返回前一个元素
    • nextIndex() 和 previousIndex():返回当前的下一个或上一个元素的索引
    • set(element):修改当前遍历元素
相关推荐
Norna18 分钟前
缓存文件从没写出来:一个 .json 被当成目录用了
python
Flynn Liang1 小时前
可观测性与成本治理:一次对话的 17 个观测点
java·langchain·可观测性·micrometer·langchain4j·token 成本·llm 监控
金銀銅鐵1 小时前
带您看懂字节码指令(三):同一行加法,为什么有四种指令
java·jvm
aifannihao3 小时前
AI 学习第 14 课:CNN 训 6 轮卡在 0.5352,数据没打乱
pytorch·python·深度学习·cnn·学习路线
yuyuxun13 小时前
协同过滤的校园二手物品智能推荐系统的设计与实现 毕业设计-附源码40082
javascript·vue.js·spring boot·python·数据分析·django·课程设计
如夏倾城4 小时前
百度文心(容易被忽略的好用AI)使用方式
人工智能·python·百度·语言模型·dubbo
用户019027581614 小时前
quotes 实时价和 klines 最新收盘价为什么对不上?
python
少司府4 小时前
嵌入式入门篇(二):初识STM32F103ZET6
linux·python·stm32·单片机·嵌入式硬件·mcu·嵌入式软件
文丑颜不良啊5 小时前
LeetCode2821~2840题目解析
java·leetcode
打工仔折腾 AI5 小时前
Changedetection.io 网页变动监控:Docker 部署、通知配置与公网暴露实践
运维·人工智能·后端·python·docker·容器·性能优化