Iterator 可以遍历 Set 和 List 集合,而 ListIterator 只能遍历 List。 Iterator 只能单向遍历,而 ListIterator 可以双向遍历(向前/后遍历)。 ListIterator 从 Iterator 接口继承,然后添加了一些额外的功能,比如添加一个元素、替换一个元素、获取前面或后面元素的索引位置。
- ListIterator 继承 Iterator
- ListIterator 是 Iterator 的子接口,这意味着 ListIterator 具备 Iterator 所有的功能,并在此基础上添加了一些额外的功能。
- ListIterator 比 Iterator多方法
- add(E e): 将指定元素插入列表,位置在迭代器当前位置之前。
- set(E e): 替换当前迭代器返回的最后一个元素。
- hasPrevious(): 判断是否有前一个元素。
- previous(): 返回前一个元素。
- previousIndex(): 获取当前索引的位置。
- nextIndex(): 获取下一个元素的索引。
- 使用范围不同
- Iterator 可以遍历所有集合。
- ListIterator 只能用于 List 及其子类。
- 其他区别
- ListIterator 提供了 add 方法,可以向 List 中添加对象,而 Iterator 没有此功能。
- ListIterator 提供了 hasPrevious() 和 previous() 方法,支持逆向遍历,而 Iterator 不支持。
- ListIterator 提供了 nextIndex() 和 previousIndex() 方法,可以定位当前索引的位置,而 Iterator 没有此功能。
- ListIterator 提供了 set() 方法,可以修改 List 中的元素,而 Iterator 只能遍历,不能修改。
总的来说,ListIterator 相比 Iterator 更强大,因为它不仅支持正向遍历,还支持逆向遍历,并且提供了更多的操作方法。然而,ListIterator 只能在 List 集合及其子类中使用,而 Iterator 可以用于任何可迭代的集合。