How does the enhanced for statement work for arrays, and how to get an iterator for an array?

Emil picture Emil · Oct 12, 2010 · Viewed 166.3k times · Source

Given the following code snippet:

int[] arr = {1, 2, 3};
for (int i : arr)
    System.out.println(i);

I have the following questions:

  1. How does the above for-each loop work?
  2. How do I get an iterator for an array in Java?
  3. Is the array converted to a list to get the iterator?

Answer

uckelman picture uckelman · Oct 12, 2010

If you want an Iterator over an array, you could use one of the direct implementations out there instead of wrapping the array in a List. For example:

Apache Commons Collections ArrayIterator

Or, this one, if you'd like to use generics:

com.Ostermiller.util.ArrayIterator

Note that if you want to have an Iterator over primitive types, you can't, because a primitive type can't be a generic parameter. E.g., if you want an Iterator<int>, you have to use an Iterator<Integer> instead, which will result in a lot of autoboxing and -unboxing if that's backed by an int[].