# Class ArrayIterator<E>

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

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

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

Direct Known Subclasses:
  `ArrayListIterator`

public class ArrayIterator<E> extends Object implements ResettableIterator<E>
Implements an `Iterator` over any array.

The array can be either an array of object or of primitives. If you know that you have an object array, the `ObjectArrayIterator` class is a better choice, as it will perform better.

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

Since:
  1.0

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ArrayIterator(Object array)`
  Constructs an ArrayIterator that will iterate over the values in the specified array.
  `ArrayIterator(Object array, int startIndex)`
  Constructs an ArrayIterator that will iterate over the values in the specified array from a specific start index.
  `ArrayIterator(Object array, int startIndex, int endIndex)`
  Constructs an ArrayIterator that will iterate over a range of values in the specified array.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `checkBound(int bound, int len, String type)`
  Checks whether the index is valid or not.
  `Object`
  `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

  - ### ArrayIterator

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

  - ### ArrayIterator

    public ArrayIterator(Object array, int startIndex)
    Constructs an ArrayIterator that will iterate over the values in the specified array from a specific start index.
    Parameters:
      `array` - the array to iterate over.
      `startIndex` - the index to start iterating at.
    Throws:
      `IllegalArgumentException` - if `array` is not an array.
      `NullPointerException` - if `array` is `null`
      `IndexOutOfBoundsException` - if the index is invalid

  - ### ArrayIterator

    public ArrayIterator(Object array, int startIndex, int endIndex)
    Constructs an ArrayIterator that will iterate over a range of values in the specified array.
    Parameters:
      `array` - the array to iterate over.
      `startIndex` - the index to start iterating at.
      `endIndex` - the index to finish iterating at.
    Throws:
      `IllegalArgumentException` - if `array` is not an array.
      `NullPointerException` - if `array` is `null`
      `IndexOutOfBoundsException` - if either index is invalid

- ## Method Details

  - ### checkBound

    protected void checkBound(int bound, int len, String type)
    Checks whether the index is valid or not.
    Parameters:
      `bound` - the index to check
      `len` - the length of the array
      `type` - the index type (for error messages)
    Throws:
      `IndexOutOfBoundsException` - if the index is invalid

  - ### getArray

    public Object 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
    Since:
      4.0

  - ### getStartIndex

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

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