Java List如何遍历元素
- 后端开发
- 2025-06-28
- 7
在Java中,List是一种有序集合,用于存储和操作元素序列,读取List的核心是遍历或访问其元素,以下是6种常用方法及详细示例:
基础for循环(通过索引读取)
List<String> list = Arrays.asList("A", "B", "C"); for (int i = 0; i < list.size(); i++) { String element = list.get(i); // 通过索引获取元素 System.out.println(element); } // 输出:A B C
适用场景:需根据索引操作元素(如修改指定位置数据)。
增强for循环(foreach)
for (String element : list) { System.out.println(element); // 直接获取元素值 }
优势:代码简洁,无需处理索引,避免越界错误。
迭代器(Iterator)
Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { String element = iterator.next(); // 逐个读取元素 System.out.println(element); // iterator.remove(); // 安全删除当前元素 }
关键点:适合在遍历中删除元素(避免ConcurrentModificationException异常)。
ListIterator(双向遍历)
ListIterator<String> listIterator = list.listIterator(); // 正向遍历 while (listIterator.hasNext()) { System.out.println(listIterator.next()); } // 反向遍历(需先移动到末尾) while (listIterator.hasPrevious()) { System.out.println(listIterator.previous()); }
适用场景:需双向遍历或修改List(如替换元素)。
Java 8 Stream API
list.stream() .filter(e -> e.startsWith("A")) // 过滤元素 .forEach(System.out::println); // 输出:A
优势:支持函数式编程(过滤、映射等复杂操作)。
forEach()方法 + Lambda
list.forEach(element -> System.out.println(element)); // 或简写为: list.forEach(System.out::println);
特点:代码最简洁,适用于简单遍历。
注意事项
- 并发修改异常:
使用for或foreach遍历时,直接调用list.remove()会抛出ConcurrentModificationException,需用Iterator.remove()替代。
- 性能考虑:
- ArrayList:get(i)效率高(O(1))
- LinkedList:避免用get(i)(O(n)),优先用迭代器或foreach。
- 空指针处理:
遍历前检查List是否为空:if (list != null)
如何选择?
| 方法 | 适用场景 |
|---|---|
| 基础for循环 | 需索引操作元素时 |
| 增强for循环 | 简单遍历(最常用) |
| Iterator/ListIterator | 遍历中删除或修改元素 |
| Stream API | 需过滤、映射等复杂操作 |
| forEach() + Lambda | 简洁遍历(Java 8+) |
最佳实践:优先使用增强for循环或forEach(),需修改元素时选Iterator,复杂数据处理用Stream API。
引用说明
通过以上方法,可高效安全地读取Java List,根据需求选择合适方式,结合异常处理和性能优化,能显著提升代码质量。