在Java中,遍历数组是常见的操作,以下是三种主要方法的详细说明及示例:
1. 使用 for 循环这是最基础且灵活的方式,通过索引逐个访问数组元素。
int[] array = {10, 20, 30, 40, 50};for (int i = 0; i < array.length; i++) { System.out.println("元素 " + i + ": " + array[i]);}特点:
- 优势:可通过索引直接访问或修改元素(如 array[i] = 100)。
- 适用场景:需要索引或修改元素时(如查找、替换)。
2. 使用 for-each 循环Java 5 引入的增强型循环,语法更简洁,无需管理索引。
int[] array = {10, 20, 30, 40, 50};for (int num : array) { System.out.println("当前元素: " + num);}特点:
- 优势:代码简洁,可读性高。
- 限制:无法获取当前索引或修改数组结构(如删除元素)。
- 适用场景:仅需读取元素且无需索引时。
3. 使用 Streams(Java 8+)通过函数式编程风格遍历,支持并行操作和链式处理。
import java.util.Arrays;int[] array = {10, 20, 30, 40, 50};Arrays.stream(array).forEach(num -> System.out.println("流处理: " + num));// 并行流示例(多线程处理)Arrays.stream(array).parallel().forEach(num -> System.out.println("并行处理: " + num));特点:
- 优势:支持并行流(parallel()),适合大数据量处理。
- 限制:性能开销较高,简单遍历可能不如传统循环高效。
- 适用场景:需要过滤、映射等复杂操作或并行处理时。
如何选择?- 简单遍历:优先用 for-each(代码简洁)。
- 需要索引/修改元素:用 for 循环。
- 大数据量或并行操作:用 Streams。
完整示例对比public class ArrayTraversal { public static void main(String[] args) { int[] data = {1, 2, 3, 4, 5}; // 1. for 循环 System.out.println("--- for 循环 ---"); for (int i = 0; i < data.length; i++) { System.out.println("索引 " + i + ": " + data[i]); } // 2. for-each 循环 System.out.println("--- for-each 循环 ---"); for (int num : data) { System.out.println("值: " + num); } // 3. Streams System.out.println("--- Streams ---"); Arrays.stream(data).forEach(num -> System.out.println("流值: " + num)); }}输出:
--- for 循环 ---索引 0: 1索引 1: 2...--- for-each 循环 ---值: 1值: 2...--- Streams ---流值: 1流值: 2...根据需求选择合适的方法,平衡代码简洁性与性能要求。