本文目录导读:

- 使用 while 循环遍历(最常用)
- 使用 for 循环遍历
- 删除元素时的遍历(安全删除)
- 遍历自定义对象
- 增强型 for 循环(foreach)- 替代方式
- 使用 Java 8 的 Lambda 表达式
- 综合示例:包含异常处理
- 遍历时的注意事项
在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());
}
}
}
遍历时的注意事项
- 不要在 foreach 循环中直接修改集合(会导致 ConcurrentModificationException)
- 使用迭代器的 remove() 方法来安全删除元素
- 检查 hasNext() 后再调用 next() 避免 NoSuchElementException
- 遍历结束后迭代器不可复用,需要重新获取
选择哪种方式取决于你的需求:
- 需要删除元素 → 使用显示迭代器
- 只需要读取 → 使用 foreach 或 Lambda
- 需要复杂操作 → 使用 while 循环迭代器