Язык программирования Java Дмитриев Андрей Владиславович Май 2007
Итератор (Iterator) Дает возможность последовательно обойти все элементы составного объекта, не раскрывая его внутреннего представления. Может выглядеть так: public interface Iterator { public Object first() ; public Object next(); public boolean hasNext(); public Object currentItem(); }
Готовый пример public interface Enumeration { public boolean hasMoreElements(); public Object nextElement(); } … Enumeration e = vector.elements(); while (e.hasMoreElements()) { System.out.println(e.nextElement()); }
Итератор (пример) public class CarData { private Vector cars; … public Enumeration elements() { return cars.elements(); }
Итератор (фильтрация) public boolean hasMoreElements() { found = false; while (internalIter.hasMoreElements() && !found) { car = (Car)internalIter.nextElement(); } return car; }
Итератор (фильтрация) (cont.) public Object nextElement(){ if (car != null) { return car; } else { throw new NoSuchElementException(); }
Итератор (фильтрация) (cont.) public class CarData { private Vector cars; … public Enumeration filteredElements(int year) { return new CarData(year); }
Итератор (Выводы) Позволяет организовывать доступ к данным класса не обозначая их структуру. Требуется предотвращать попытки изменения данных во время их чтения.