Java 基础面试题, 什么是 Java 中的迭代器Iterator?
Java 基础面试题, 什么是 Java 中的迭代器Iterator?
QA
Step 1
Q:: 什么是 Java 中的迭代器(Iterator)?
A:: 迭代器(Iterator)是 Java 集合框架的一部分,它是一种设计模式,用于遍历集合中的元素。Iterator 提供了一个统一的接口,无论集合的内部实现如何,开发者都可以通过 Iterator 对集合中的元素进行遍历。Iterator 接口主要有三个方法:hasNext(),用于检查集合中是否还有下一个元素;next(),返回集合中的下一个元素;remove()
,删除从迭代器中返回的最后一个元素。
Step 2
Q:: Iterator 和 ListIterator 的区别是什么?
A:: Iterator 可以用于 Set、List 和 Map 等集合类型的遍历,而 ListIterator 是 List 集合特有的,它是 Iterator 的一个子接口。ListIterator 支持双向遍历(可以向前和向后遍历),并且可以在遍历的过程中添加、修改或删除元素。而 Iterator 仅支持单向遍历和删除操作。
Step 3
Q:: 如何正确使用 Iterator 删除集合中的元素?
A:: 使用 Iterator 删除集合中的元素时,应调用 Iterator 的 remove() 方法,而不是直接调用集合的 remove() 方法。这样做可以避免 ConcurrentModificationException 异常,因为 Iterator 的 remove()
方法会更新迭代器的状态,以确保遍历过程的安全性。
Step 4
Q:: 如何处理 Iterator 中的 ConcurrentModificationException?
A:: ConcurrentModificationException 是当一个线程在迭代集合时,另一个线程修改了该集合时抛出的异常。为了避免这个异常,可以使用并发安全的集合类(如 CopyOnWriteArrayList),或者在迭代过程中避免对集合进行修改。另外,可以考虑使用 Iterator 自带的 remove()
方法来安全地删除元素。