Java集合遍历的方法有哪些

1.普通for循环

只适用于支持随机访问的集合

java 复制代码
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)

java 复制代码
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 的标准方式

java 复制代码
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,可以正向/反向遍历,还能在遍历时修改、插入元素

java 复制代码
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+)

函数式写法,简洁优雅

java 复制代码
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 等进行过滤、转换、排序等操作

java 复制代码
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
    }
}
相关推荐
我命由我123456 小时前
Android Studio - Android Studio 自定义预览尺寸
android·java·ide·java-ee·android studio·android-studio·android runtime
充钱大佬6 小时前
Python测试基础教程
python·log4j·apache
咖啡八杯7 小时前
GoF设计模式——迭代器模式
java·后端·设计模式·迭代器模式
AIGS0017 小时前
企业AI落地的关键认知:向量空间JBoltAI的本体语义平台
java·人工智能·人工智能ai大模型应用
小职boy7 小时前
不忘初心Windows系统工具箱下载 - 系统优化与维护工具(v1.1)
windows·系统·电脑软件·工具箱
KaMeidebaby8 小时前
卡梅德生物技术快报|抗体亲和力成熟工业化调控新机制:差异性浆细胞增殖工艺优化思路
java·开发语言·人工智能·算法·机器学习·架构·spark
初心丨哈士奇8 小时前
Python 四大基础容器|列表篇
python
Mininglamp_27189 小时前
Claude Code 封禁中国开发者之后:本地 AI 编程工具的替代方案实测
开发语言·人工智能·windows·开源软件·ai-native
醉城夜风~9 小时前
Java详解经典算法题:接雨水(三种实现方案+原理剖析)
java·开发语言·算法
明理的信封9 小时前
AI 基础设施的“去 Python 化“:Rust 与 C# 的两条替代路径
人工智能·python·rust