Java面试题更新 2026-08-05

请解释 Java 中的迭代器(Iterator)接口,包括它的主要方法、工作原理以及它在集合框架中的作用。

技术原理Java

考察说明

考查对 Java 集合框架中 Iterator 接口的理解,包括其基本方法、遍历机制和设计目的。

回答思路

  1. 【回答框架 1】Iterator 是 Java 集合框架中的一个接口,用于遍历集合中的元素。它提供了一种统一的方式来访问集合中的元素,而不需要知道集合的具体实现细节。其主要方法有三个:hasNext() 判断是否还有下一个元素,next() 返回下一个元素,remove() 移除当前元素。
  2. 【回答框架 2】Iterator 的工作原理是基于游标(cursor)的。当创建迭代器时,游标指向集合的第一个元素之前。每次调用 next() 时,游标前移并返回当前元素。hasNext() 用于检查游标之后是否还有元素。这种设计使得遍历过程安全且一致。
  3. 【回答框架 3】在集合框架中,Iterator 的作用是提供一种通用的遍历方式。所有 Collection 子类,如 List、Set 等,都实现了 iterator() 方法,返回各自的迭代器。这使得程序员可以用统一的代码遍历不同类型的集合,提高了代码的复用性和可维护性。
  4. 【回答框架 4】使用 Iterator 时需要注意快速失败行为。在迭代过程中,如果集合被结构性地修改(如添加或删除元素),迭代器会抛出 ConcurrentModificationException,以防止并发修改导致的不一致。这种行为基于 modCount 计数器。
  5. 【回答框架 5】与增强 for 循环相比,Iterator 更灵活,因为可以在遍历过程中移除元素,而增强 for 循环不支持直接移除。此外,Iterator 也支持遍历过程中进行更精细的控制,如跳过元素等。
  6. 【关键点 1】Iterator 接口核心方法:hasNext()、next()、remove()。
  7. 【关键点 2】基于游标工作,游标初始位于第一个元素前。
  8. 【关键点 3】所有 Collection 子类可通过 iterator() 方法获得迭代器。
  9. 【关键点 4】迭代过程中结构性修改会抛出 ConcurrentModificationException。
  10. 【关键点 5】Iterator 允许在遍历时安全移除元素,比增强 for 循环更灵活。
  11. 【易错点 1】调用 next() 前必须用 hasNext() 检查,否则可能抛出 NoSuchElementException。
  12. 【易错点 2】迭代器是一次性的,不能重置,如果需要重新遍历需重新创建。
  13. 【易错点 3】remove() 只能在调用 next() 之后调用一次,否则会抛出 IllegalStateException。