Iterator Implementation I had to write my own iterator implementation for my structure which has ArrayList&lt;Vector&gt; field. An iterator is supposed to iterate over mentioned List. Any suggestions on improving it, or anything else?

public class ExamplesIterator implements Iterator&lt;Vector&gt; {

    private List&lt;Vector&gt; examples;  //ArrayList&lt;Vector&gt; will be set here
    private int          index;

    public ExamplesIterator(List&lt;Vector&gt; examples) {
        this.examples = examples;
        index = 0;
    }

    @Override
    public Vector next() {
        if(hasNext()) {
            return examples.get(index++);
        } else {
            throw new NoSuchElementException("There are no elements size = " + examples.size());
        }
    }

    @Override
    public boolean hasNext() {
        return !(examples.size() == index);
    }

    @Override
    public void remove() {
        if(index &lt;= 0) {
            throw new IllegalStateException("You can't delete element before first next() method call");
        }
        examples.remove(--index);
    }
}
I think your implementation is overall very good, two small comments:


Improving readability for return statement in hasNext to return examples.size() != index;
Making the examples field final: private final List&lt;Vector&gt; examples;


However, if the Vector class here is java.util.Vector you should know that it is considered deprecated in favor of the ArrayList class.

Also, since you create your iterator from a List&lt;Vector&gt; you could get an Iterator&lt;Vector&gt; by calling list.iterator();