1.普通for循环
只适用于支持随机访问的集合
import java.util.*;
public class NormalForDemo {
public static void main(String[] args) {
List<String> list = Arrays.asList("A", "B", "C");
for (int i = 0; i < list.size(); i++) {
System.out.println("索引 " + i + " -> " + list.get(i));
}
}
}
2.增强for循环
最常见、简洁,底层其实是迭代器(Iterator)
import java.util.*;
public class ForEachDemo {
public static void main(String[] args) {
List<String> list = Arrays.asList("A", "B", "C");
for (String s : list) {
System.out.println(s);
}
}
}
3.Iterator 迭代器
支持安全删除(iterator.remove()),是遍历 Collection 的标准方式
import java.util.*;
public class IteratorDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));
Iterator<String> it = list.iterator();
while (it.hasNext()) {
String s = it.next();
if ("B".equals(s)) {
it.remove(); // 安全删除元素
}
System.out.println(s);
}
System.out.println("删除后的集合: " + list);
}
}
4.ListIterator(双向迭代器)
Iterator的子类,仅用于 List,可以正向/反向遍历,还能在遍历时修改、插入元素
import java.util.*;
public class ListIteratorDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));
ListIterator<String> it = list.listIterator();
while (it.hasNext()) {
String s = it.next();
if ("B".equals(s)) {
it.set("BB"); // 修改当前元素
it.add("X"); // 在当前位置插入元素
}
}
// 反向遍历
while (it.hasPrevious()) {
System.out.println(it.previous());
}
}
}
5.forEach + Lambda (Java 8+)
函数式写法,简洁优雅
import java.util.*;
public class ForEachLambdaDemo {
public static void main(String[] args) {
List<String> list = Arrays.asList("A", "B", "C");
// Lambda
list.forEach(s -> System.out.println(s));
// 方法引用
list.forEach(System.out::println);
}
}
6.Stream API (Java 8+)
适合做链式处理,可以配合 filter、map、sorted 等进行过滤、转换、排序等操作
import java.util.*;
public class StreamDemo {
public static void main(String[] args) {
List<String> list = Arrays.asList("apple", "banana", "cherry");
list.stream()
.filter(s -> s.startsWith("b"))
.map(String::toUpperCase)
.forEach(System.out::println); // 输出 BANANA
}
}