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 可以用於任何可迭代的集合。