Java案例怎么遍历迭代器数据?

wen java案例 9

本文目录导读:

Java案例怎么遍历迭代器数据?

  1. 使用 while 循环遍历(最常用)
  2. 使用 for 循环遍历
  3. 删除元素时的遍历(安全删除)
  4. 遍历自定义对象
  5. 增强型 for 循环(foreach)- 替代方式
  6. 使用 Java 8 的 Lambda 表达式
  7. 综合示例:包含异常处理
  8. 遍历时的注意事项

在Java中,遍历迭代器(Iterator)数据有多种方式,以下是几种常见的案例:

使用 while 循环遍历(最常用)

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorExample {
    public static void main(String[] args) {
        // 创建集合并添加元素
        List<String> list = new ArrayList<>();
        list.add("Java");
        list.add("Python");
        list.add("C++");
        list.add("JavaScript");
        // 获取迭代器
        Iterator<String> iterator = list.iterator();
        // 使用while循环遍历
        while (iterator.hasNext()) {
            String element = iterator.next();
            System.out.println(element);
        }
    }
}

使用 for 循环遍历

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ForLoopIterator {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("苹果");
        list.add("香蕉");
        list.add("橙子");
        // 使用for循环遍历(需要重复获取迭代器)
        for (Iterator<String> it = list.iterator(); it.hasNext(); ) {
            String fruit = it.next();
            System.out.println(fruit);
        }
    }
}

删除元素时的遍历(安全删除)

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class RemoveWhileIterating {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(4);
        numbers.add(5);
        // 使用迭代器安全删除元素
        Iterator<Integer> iterator = numbers.iterator();
        while (iterator.hasNext()) {
            Integer num = iterator.next();
            if (num % 2 == 0) {  // 删除偶数
                iterator.remove();  // 使用迭代器的remove方法
            }
        }
        System.out.println("删除偶数后的集合:" + numbers);
        // 输出:[1, 3, 5]
    }
}

遍历自定义对象

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
class Student {
    private String name;
    private int age;
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Override
    public String toString() {
        return "学生{姓名='" + name + "', 年龄=" + age + "}";
    }
}
public class CustomObjectIterator {
    public static void main(String[] args) {
        List<Student> students = new ArrayList<>();
        students.add(new Student("张三", 20));
        students.add(new Student("李四", 22));
        students.add(new Student("王五", 21));
        // 遍历自定义对象
        Iterator<Student> iterator = students.iterator();
        while (iterator.hasNext()) {
            Student student = iterator.next();
            System.out.println(student);
        }
    }
}

增强型 for 循环(foreach)- 替代方式

import java.util.ArrayList;
import java.util.List;
public class ForEachExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("红色");
        list.add("蓝色");
        list.add("绿色");
        // 使用增强型for循环(内部使用迭代器)
        for (String color : list) {
            System.out.println(color);
        }
    }
}

使用 Java 8 的 Lambda 表达式

import java.util.ArrayList;
import java.util.List;
public class LambdaIterator {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Spring");
        list.add("Summer");
        list.add("Autumn");
        list.add("Winter");
        // 使用forEach方法(Java 8+)
        list.forEach(season -> System.out.println(season));
        // 或者使用方法引用
        list.forEach(System.out::println);
    }
}

综合示例:包含异常处理

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
public class SafeIterator {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("A");
        list.add("B");
        list.add("C");
        Iterator<String> iterator = list.iterator();
        try {
            while (true) {
                if (iterator.hasNext()) {
                    String element = iterator.next();
                    System.out.println("元素:" + element);
                } else {
                    break;  // 没有更多元素时退出
                }
            }
        } catch (NoSuchElementException e) {
            System.out.println("遍历完成或发生错误:" + e.getMessage());
        }
    }
}

遍历时的注意事项

  1. 不要在 foreach 循环中直接修改集合(会导致 ConcurrentModificationException)
  2. 使用迭代器的 remove() 方法来安全删除元素
  3. 检查 hasNext() 后再调用 next() 避免 NoSuchElementException
  4. 遍历结束后迭代器不可复用,需要重新获取

选择哪种方式取决于你的需求:

  • 需要删除元素 → 使用显示迭代器
  • 只需要读取 → 使用 foreach 或 Lambda
  • 需要复杂操作 → 使用 while 循环迭代器

抱歉,评论功能暂时关闭!