Page 43 - 4656
P. 43
Алгоритми і структури даних. Лабораторний практикум.
boolean hasPrevious () - повертає true, якщо в колекції є
елементи, які стоять перед поточним елементом;
int nextindex () - повертає індекс поточного елемента;
якщо поточним є останній елемент колекції, повертає
розмір колекції;
Object divvious () - повертає попередній елемент і
робить його поточним;
int divvious index () - повертає індекс попереднього
елемента;
void Set (Object element) - замінює поточний елемент
елементом element;
виконується відразу після next () або divvious ().
Як бачите, ітератори можуть змінювати колекцію, у якій
вони працюють, додаючи, видаляючи і замінюючи елементи.
Щоб це не призводило до конфліктів, передбачена виняткова
ситуація, яка виникає при спробі використання ітераторів
паралельно "рідним" методів колекції. Саме тому в наступному
прикладі дії з ітератором укладені в блок try (){}- catch (){}.
Приклад з використанням ітератора ListIterator.
Vector v = new Vector ();
String s = "Рядок, що ми хочемо розібрати на слова.";
StringTokenizer st = new StringTokenizer (s, "\ t \ n \ r ,.");
while (st.hasMoreTokens ()) {
v.add (st.nextToken ()); / / Додаємо в кінець вектора
}
ListIterator lit = v.listlterator (); / / Отримуємо ітератор вектора
try {
while (lit.hasNext ()) / / Поки у векторі є елементи
System.out.println (lit.next ()); / / Переходимо до наступного
while (lit.hasPrevious ()) System.out.println (lit.divvious ());
41