# Interface Iterator<E>

All Known Subinterfaces:
  `ListIterator<E>`

All Known Implementing Classes:
  `Form.TabIterator`

public interface Iterator<E>

An `Iterator` is used to sequence over a collection of objects. Conceptually, an iterator is always positioned between two elements of a collection. A fresh iterator is always positioned in front of the first element.

If a collection has been changed since its creation, methods `next` and `hasNext()` may throw a `ConcurrentModificationException`. Iterators with this behavior are called fail-fast iterators.

Type parameter `E`: the type of object returned by the iterator.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `hasNext()`
  Returns whether there are more elements to iterate, i.e.
  `E`
  `next()`
  Returns the next object in the iteration, i.e.
  `void`
  `remove()`
  Removes the last object returned by `next` from the collection.

- ## Method Details

  - ### hasNext

    boolean hasNext()

    Returns whether there are more elements to iterate, i.e. whether the iterator is positioned in front of an element.

    ###### Returns

    `true` if there are more elements, `false` otherwise.

    ###### See also

    - #next

  - E next()

    Returns the next object in the iteration, i.e. returns the element in front of the iterator and advances the iterator by one position.

    ###### Returns

    the next object.

    ###### Throws

    - `NoSuchElementException`: if there are no more elements.

    ###### See also

    - #hasNext

  - ### remove

    void remove()

    Removes the last object returned by `next` from the collection. This method can only be called once after `next` was called.

    ###### Throws

    - `UnsupportedOperationException`: @throws UnsupportedOperationException if removing is not supported by the collection being iterated.

    - `IllegalStateException`: @throws IllegalStateException if `next` has not been called, or `remove` has already been called after the last call to `next`.