# Interface Iterator<E>

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

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.

- ## 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()`

  - ### 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` - if removing is not supported by the collection being iterated.
      `IllegalStateException` - if `next` has not been called, or `remove` has already been called after the last call to `next`.