使用 ListIterator 修改列表

Java 中的输入/输出与流

Alex Liu

Software Development Engineer

Iterator 与 ListIterator

Iterator 与 ListIterator 的对比

Java 中的输入/输出与流

示例 ArrayList

import java.util.ArrayList;
public class SampleData {
    public static void main(String[] args) {
        ArrayList<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");
    }
}  
[Alice, Bob, Charlie]
Java 中的输入/输出与流

用 ListIterator 遍历列表

// 导入 ListIterator 类
import java.util.ListIterator;

// 为示例列表 `names` 创建 ListIterator 对象 ListIterator<String> it = names.listIterator(); // 使用 .hasNext() 和 `.next()` 迭代并逐行打印 while (it.hasNext()) { System.out.println(it.next()); }
Alice 
Bob 
Charlie
Java 中的输入/输出与流

用 ListIterator 向后遍历

  • 使用 .previous() 向后移动
// 为示例列表 `names` 创建 ListIterator 对象
ListIterator<String> it = names.listIterator(names.size());
// 使用 .hasPrevious() 判断是否到达列表开头
while (it.hasPrevious()) {
    // 使用 .previous() 逆序获取元素
    System.out.println(it.previous());}
  • 逆序打印,输出:
Charlie
Bob
Alice
Java 中的输入/输出与流

迭代时修改元素

  • 使用 .set() 方法
// 为示例列表 names 创建 ListIterator 对象
ListIterator<String> it = names.listIterator();

// 迭代并用 .set() 修改元素 while (it.hasNext()) { String name = it.next(); if ("Bob".equals(name)) it.set("Bobby"); }
  • 更新后的 names 列表:
[Alice, Bobby, Charlie]
Java 中的输入/输出与流

迭代时添加元素

  • 使用 .add() 添加元素
ListIterator<String> it = names.listIterator();

// 迭代列表并用 .add() 插入元素 while (it.hasNext()) { String name = it.next(); if ("Charlie".equals(name)) it.add("David"); }
  • 更新后的 names 列表:
    [Alice, Bobby, Charlie, David]
    
Java 中的输入/输出与流

总结

  • ListIterator 扩展自 Iterator
    • 支持正向与反向遍历
    • 允许在迭代时修改元素
  • 关键方法回顾

    • .next()/.previous():前进/后退
    • .set():修改当前元素
    • .add():动态插入元素
    • .remove():安全删除元素
    • 仅适用于 List(ArrayListLinkedList 等)
Java 中的输入/输出与流

¡Vamos a practicar!

Java 中的输入/输出与流

Preparing Video For Download...