package org.emdev.utils.collections; import java.util.Iterator; public class ArrayIterator<E> implements Iterator<E>, Iterable<E> { private final E[] values; private int index = -1; public ArrayIterator(final E[] values) { this.values = values; } @Override public Iterator<E> iterator() { index = -1; return this; } @Override public boolean hasNext() { index++; while (index < values.length) { if (values[index] != null) { break; } index++; } return index < values.length; } @Override public E next() { return 0 <= index && index < values.length ? values[index] : null; } @Override public void remove() { if (0 <= index && index < values.length) { values[index] = null; } } }