面试题:简述 Enumeration 和 Iterator 接口的区别 ?

Enumeration 和 Iterator 都是 Java 中用于遍历集合元素的接口,但它们之间存在一些关键区别:

  1. 引入时间
    • Enumeration 是 Java 1.0 引入的,属于早期的集合遍历接口。
    • Iterator 是 Java 1.2 引入的,作为 Enumeration 的替代品,提供了更多的功能和更好的设计。
  2. 方法
    • Enumeration 提供了两个方法:
      • boolean hasMoreElements():判断是否还有更多元素。
      • E nextElement():返回下一个元素。
    • Iterator 提供了三个方法:
      • boolean hasNext():判断是否还有更多元素。
      • E next():返回下一个元素。
      • void remove():移除当前元素(可选操作)。
  3. 安全性
    • Enumeration 是只读的,不支持在遍历过程中修改集合。
    • Iterator 支持在遍历过程中通过 remove() 方法移除元素,提供了更灵活的操作。
  4. 使用场景
    • Enumeration 主要用于旧版的集合类,如 Vector 和 Hashtable
    • Iterator 用于现代的集合类,如 ArrayListHashSet 等,是推荐使用的遍历方式。
  5. 并发修改
    • Enumeration 不支持并发修改检测。
    • Iterator 支持并发修改检测,如果在遍历过程中集合被修改(除了通过 Iterator 自身的 remove() 方法),会抛出 ConcurrentModificationException 异常。

总结:

  • Enumeration 是早期的遍历接口,功能较为简单,不支持修改集合。
  • Iterator 是现代的遍历接口,功能更强大,支持在遍历过程中修改集合,并且提供了并发修改检测机制。

在大多数情况下,推荐使用 Iterator 来遍历集合,除非你正在处理一些遗留代码或特定的旧版集合类。

THE END
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容