Iterator和ListIterator有什麼區別

BookerABC發表於2024-11-04

Iterator 可以遍歷 Set 和 List 集合,而 ListIterator 只能遍歷 List。 Iterator 只能單向遍歷,而 ListIterator 可以雙向遍歷(向前/後遍歷)。 ListIterator 從 Iterator 介面繼承,然後新增了一些額外的功能,比如新增一個元素、替換一個元素、獲取前面或後面元素的索引位置。

  1. ListIterator 繼承 Iterator
  • ListIterator 是 Iterator 的子介面,這意味著 ListIterator 具備 Iterator 所有的功能,並在此基礎上新增了一些額外的功能。
  1. ListIterator 比 Iterator多方法

  • add(E e): 將指定元素插入列表,位置在迭代器當前位置之前。
  • set(E e): 替換當前迭代器返回的最後一個元素。
  • hasPrevious(): 判斷是否有前一個元素。
  • previous(): 返回前一個元素。
  • previousIndex(): 獲取當前索引的位置。
  • nextIndex(): 獲取下一個元素的索引。
  1. 使用範圍不同
  • Iterator 可以遍歷所有集合。
  • ListIterator 只能用於 List 及其子類。
  1. 其他區別
  • ListIterator 提供了 add 方法,可以向 List 中新增物件,而 Iterator 沒有此功能。
  • ListIterator 提供了 hasPrevious() 和 previous() 方法,支援逆向遍歷,而 Iterator 不支援。
  • ListIterator 提供了 nextIndex() 和 previousIndex() 方法,可以定位當前索引的位置,而 Iterator 沒有此功能。
  • ListIterator 提供了 set() 方法,可以修改 List 中的元素,而 Iterator 只能遍歷,不能修改。

總的來說,ListIterator 相比 Iterator 更強大,因為它不僅支援正向遍歷,還支援逆向遍歷,並且提供了更多的操作方法。然而,ListIterator 只能在 List 集合及其子類中使用,而 Iterator 可以用於任何可迭代的集合。

相關文章