# Class ObjectArrayIterator<E>

java.lang.Object
org.apache.commons.collections4.iterators.ObjectArrayIterator<E>

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

All Implemented Interfaces:
  `Iterator<E>`, `ResettableIterator<E>`

Direct Known Subclasses:
  `ObjectArrayListIterator`

public class ObjectArrayIterator<E> extends Object implements ResettableIterator<E>
An `Iterator` over an array of objects.

This iterator does not support `remove()`, as the object array cannot be structurally modified.

The iterator implements a `reset()` method, allowing the reset of the iterator back to the start if required.

Since:
  3.0

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ObjectArrayIterator(E... array)`
  Constructs an ObjectArrayIterator that will iterate over the values in the specified array.
  `ObjectArrayIterator(E[] array, int start)`
  Constructs an ObjectArrayIterator that will iterate over the values in the specified array from a specific start index.
  `ObjectArrayIterator(E[] array, int start, int end)`
  Constructs an ObjectArrayIterator that will iterate over a range of values in the specified array.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `E[]`
  `getArray()`
  Gets the array that this iterator is iterating over.
  `int`
  `getEndIndex()`
  Gets the end index to loop to.
  `int`
  `getStartIndex()`
  Gets the start index to loop from.
  `boolean`
  `hasNext()`
  Returns true if there are more elements to return from the array.
  `E`
  `next()`
  Returns the next element in the array.
  `void`
  `remove()`
  Throws `UnsupportedOperationException`.
  `void`
  `reset()`
  Resets the iterator back to the start index.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface java.util.Iterator

  `forEachRemaining`

- ## Constructor Details

  - ### ObjectArrayIterator

    public ObjectArrayIterator(E... array)
    Constructs an ObjectArrayIterator that will iterate over the values in the specified array.
    Parameters:
      `array` - the array to iterate over
    Throws:
      `NullPointerException` - if `array` is `null`

  - ### ObjectArrayIterator

    public ObjectArrayIterator(E[] array, int start)
    Constructs an ObjectArrayIterator that will iterate over the values in the specified array from a specific start index.
    Parameters:
      `array` - the array to iterate over
      `start` - the index to start iterating at
    Throws:
      `NullPointerException` - if `array` is `null`
      `IndexOutOfBoundsException` - if the start index is out of bounds

  - ### ObjectArrayIterator

    public ObjectArrayIterator(E[] array, int start, int end)
    Constructs an ObjectArrayIterator that will iterate over a range of values in the specified array.
    Parameters:
      `array` - the array to iterate over
      `start` - the index to start iterating at
      `end` - the index (exclusive) to finish iterating at
    Throws:
      `IndexOutOfBoundsException` - if the start or end index is out of bounds
      `IllegalArgumentException` - if end index is before the start
      `NullPointerException` - if `array` is `null`

- ## Method Details

  - ### getArray

    public E[] getArray()
    Gets the array that this iterator is iterating over.
    Returns:
      the array this iterator iterates over

  - ### getEndIndex

    public int getEndIndex()
    Gets the end index to loop to.
    Returns:
      the end index

  - ### getStartIndex

    public int getStartIndex()
    Gets the start index to loop from.
    Returns:
      the start index

  - ### hasNext

    public boolean hasNext()
    Returns true if there are more elements to return from the array.
    Specified by:
      `hasNext` in interface `Iterator<E>`
    Returns:
      true if there is a next element to return

  - ### next

    public E next()
    Returns the next element in the array.
    Specified by:
      `next` in interface `Iterator<E>`
    Returns:
      the next element in the array
    Throws:
      `NoSuchElementException` - if all the elements in the array have already been returned

  - ### remove

    public void remove()
    Throws `UnsupportedOperationException`.
    Specified by:
      `remove` in interface `Iterator<E>`
    Throws:
      `UnsupportedOperationException` - always

  - ### reset

    public void reset()
    Resets the iterator back to the start index.
    Specified by:
      `reset` in interface `ResettableIterator<E>`