Как реализовать Iterator для собственного List?
Да, вам нужно реализовать класс от Iterator и возвращать экземпляр этого класса в iterator методе. Если не хочется заморачиваться, то можете в Вашем List сразу имплементировать Iterator, соответственно в iterator() возвращать this ну и сразу добавить в нем методы next, hasNext. Таким образом у Вас вся логика будет сокрыта в одном классе, но объект будет одновременно и итерируемым, и итератором, что не очень хорошо в моем представлении.
Вот Вам реализация по первой ссылке в гугле:import java.util.Iterator;

public class SOList<Type> implements Iterable<Type> {

    private Type[] arrayList;
    private int currentSize;

    public SOList(Type[] newArray) {
        this.arrayList = newArray;
        this.currentSize = arrayList.length;
    }

    @Override
    public Iterator<Type> iterator() {
        Iterator<Type> it = new Iterator<Type>() {

            private int currentIndex = 0;

            @Override
            public boolean hasNext() {
                return currentIndex < currentSize && arrayList[currentIndex] != null;
            }

            @Override
            public Type next() {
                return arrayList[currentIndex++];
            }

            @Override
            public void remove() {
                throw new UnsupportedOperationException();
            }
        };
        return it;
    }
}Вот еще примерыА вот тут и с объяснениемНу и последнийВсе, вот этот точно последний...