Паттерн Итератор предоставляет механизм последовательного перебора элементов коллекции без раскрытия ее внутреннего представления.
Кроме того, перебор элементов выполняется объектом итератора, а не самой коллекцией. Это упрощает интерфейс и реализацию коллекции, а также способствует более логичному распределению обязанностей.
public class MyIterator implements Iterator { Object []items; int pos = 0; public MyIterator(Object[] items) { this.items = items; } public boolean hasNext() { if(pos >= items.length || items[pos] == null) { return false; } else { return true; } } public Object next() { Object item = items[pos]; pos++; return item; } public void remove() { if(pos <= 0) { throw new IllegalStateException("pos <= 0"); } if(items[pos-1] !=null) { for(int i= pos - 1; i<(items.length-1);i++) { items[i] = items[i+1]; } items[items.length-1] = null; } } }
public class Main { public static void main(String[] args) { String [] list = new String[10]; for(int i=0;i<10;i++) { list[i] = "item-"+i; } MyIterator myIter = new MyIterator(list); Iterator it = myIter; while(myIter.hasNext()) { System.out.println(myIter.next()); } while(it.hasNext()) { System.out.println(myIter.next()); } } }