package com.revolsys.collection.list; import java.util.List; import java.util.NoSuchElementException; import com.revolsys.collection.iterator.AbstractIterator; public class ListByIndexIterator<V> extends AbstractIterator<V> { private final List<V> list; private int index = 0; public ListByIndexIterator(final List<V> list) { this.list = list; } @Override protected V getNext() throws NoSuchElementException { if (this.index < this.list.size()) { try { return this.list.get(this.index++); } catch (final ArrayIndexOutOfBoundsException e) { throw new NoSuchElementException(); } } throw new NoSuchElementException(); } public <V2> int indexOf(final List<V2> list, final Object value) { int index = 0; try ( ListByIndexIterator<V2> iterable = new ListByIndexIterator<>(list)) { if (value == null) { for (final V2 currentValue : iterable) { if (currentValue == null) { return index; } else { index++; } } } else { for (final V2 currentValue : iterable) { if (value.equals(currentValue)) { return index; } else { index++; } } } } return -1; } }