Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 第四章:集合框架

第四章:集合框架

4.3 遍历集合

在Java中,集合框架提供了多种方式来遍历集合中的元素。根据不同的集合类型和需求,可以选择合适的遍历方法。以下是常见的集合遍历方式:

1. 使用迭代器(Iterator)

迭代器是Java集合框架中用于遍历集合的标准方式。它提供了统一的方法来访问集合中的元素,而不需要关心集合的具体实现。

List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("C++");

Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    String element = iterator.next();
    System.out.println(element);
}

特点:

  • 适用于所有实现了Iterable接口的集合类
  • 可以在遍历过程中安全地删除元素(使用iterator.remove())
  • 只能单向遍历

2. 增强for循环(for-each)

Java 5引入了增强for循环,简化了集合的遍历语法。

for (String language : list) {
    System.out.println(language);
}

特点:

  • 语法简洁
  • 适用于所有实现了Iterable接口的集合
  • 不能修改集合结构(添加/删除元素)

3. 使用ListIterator(仅List集合)

ListIterator是Iterator的子接口,专门为List集合设计,提供了双向遍历的能力。

ListIterator<String> listIterator = list.listIterator();
while (listIterator.hasNext()) {
    System.out.println(listIterator.next());
}
// 反向遍历
while (listIterator.hasPrevious()) {
    System.out.println(listIterator.previous());
}

特点:

  • 可以双向遍历
  • 可以在遍历过程中添加、修改或删除元素
  • 仅适用于List集合

4. 使用forEach方法(Java 8+)

Java 8引入了函数式编程特性,集合类新增了forEach方法。

list.forEach(element -> System.out.println(element));
// 或使用方法引用
list.forEach(System.out::println);

特点:

  • 代码简洁
  • 支持Lambda表达式
  • 并行流中可以自动并行处理

5. 遍历Map集合

Map集合的遍历方式略有不同,因为需要同时处理键和值。

Map<String, Integer> map = new HashMap<>();
map.put("Java", 1);
map.put("Python", 2);
map.put("C++", 3);

// 遍历键值对
for (Map.Entry<String, Integer> entry : map.entrySet()) {
    System.out.println(entry.getKey() + ": " + entry.getValue());
}

// 遍历键
for (String key : map.keySet()) {
    System.out.println(key);
}

// 遍历值
for (Integer value : map.values()) {
    System.out.println(value);
}

// Java 8方式
map.forEach((k, v) -> System.out.println(k + ": " + v));

性能考虑

不同的遍历方式在性能上有所差异:

  • 对于ArrayList,普通for循环(使用索引)通常最快
  • 对于LinkedList,迭代器方式更高效
  • Java 8的forEach方法在并行处理大数据集时可能有优势

注意事项

  1. 不要在遍历过程中直接修改集合结构(使用集合的add/remove方法),否则会抛出ConcurrentModificationException
  2. 需要修改集合时,应使用迭代器的remove方法
  3. 对于并发集合,考虑使用ConcurrentHashMap或CopyOnWriteArrayList等线程安全集合

通过掌握这些遍历方式,你可以根据具体场景选择最合适的方法来操作集合元素。

Last Updated:: 3/27/25, 12:48 PM