Під час розробки додатків ми часто стикаємося з необхідністю отримати доступ до всіх елементами колекції. Наприклад, вивести на екран ці елементи.
Найпростішим і ефективним способом зробити це, є використання ітератора (iterator). Итератор - це об'єкт, який реалізовує интерфес Iterator. або ListIterator.
Iterator дозволяє нам отримати доступ до всіх елементів колекції і видаляти ті з них, які необхідно. ListIterator є спадкоємцем Iterator і дозволяє нам "пробігтися" по колекції в обох напрямках. ListIterator також дозволяє нам змінювати елементи.
Для того, щоб іспользвоать итератор, нам перш за все необхідно отримати його. Для цього ми повинні використовувати метод iterator ().
Итератор має такі методи:
- bollean hasNext ()
Цей метод перевіряє, чи є в колекції наступний елемент. Якщо є, то метод повертає true. якщо немає - false. - Object next ()
Цей метод повертає наступний елемент колекції. Якщо елемент не виявлений, то метод "кидає" NoSuchElementException. - void remove ()
Цей метод видаляє поточний елемент. Важливий момент полягає в тому, що спочатку цей елемент необхідно отримати за допомогою методу next (). якщо ми викличемо метод remove () до методу next (). то ми отримаємо IllegalStateException.
ListIterator має більший набір методів:
- void add (Object obj)
Цей метод додає елемент в колекцію на наступну позицію після елемента, отриманого за допомогою методу next (). - boolean hasNext ()
Цей метод перевіряє, чи є в колекції наступний елемент. Якщо є, то метод повертає true. якщо немає - false. - boolean hasPreviuos ()
Цей метод перевіряє, чи є в колекції попередній елемент. Якщо є, то метод повертає true. якщо немає - false. - Object next ()
Цей метод повертає наступний елемент колекції. Якщо елемент не виявлений, то метод "кидає" NoSuchElementException. - Object previous ()
Цей метод повертає попередній елемент колекції. Якщо елемент не виявлений, то метод "кидає" NoSuchElementException. - int nextIndex ()
Цей метод повертає індекс наступного елемента. Якщо в колекції остутствие наступний елемент - повертається розмір колекції. - int previousIndex ()
Цей метод повертає індекс попереднього елемента. Якщо в колекції остутствие попередній елемент - повертає значення -1. - void set (Object obj)
Цей метод привласнює текущеіу елементу значення, яке передано в якості параметра методу. - void remove ()
Цей метод видаляє поточний елемент. Важливий момент полягає в тому, що спочатку цей елемент необхідно отримати за допомогою методу next () або за допомогою методу previous (). якщо ми викличемо метод remove () до методу next () або методу previous (). то ми отримаємо IllegalStateException.
Для розуміння того, як це працює на практиці, розглянемо приклад простого додатка.
В результаті роботи програми ми отримаємо наступний результат:
У цьому розділі ми вивчили основи інтерфейсів Iterator і ListIterator. і рассотрелі приклад простого додатка з його використанням.