Delphi | Сети | ПК | Маршрутизаторы | Моделирование | Протоколы | Экспертные системы | Удаленный доступ | Доменные имена
Аплеты | SQL | Надежность | Задачи | Информационные процессы | JAVA | Отказы изделия | Расчет надежности показателей | Инфсис

Классы-коллекции, программирование в Java

В рамках одного класса могут присутствовать несколько методов с одним и тем же названием, отличающихся друг от друга только количеством и/или типом параметров. Нельзя определить два метода с одинаковыми названиями, отличающиеся только типом возвращаемого значения. Метод, название которого совпадает с именем класса, называется конструктором и вызывается при создании объекта командой new. Конструкторов с разными списками параметров может быть несколько.

Интерфейс  Listlterator

Интерфейс Listiterator расширяет интерфейс iterator , обеспечивая перемещение по коллекции как в прямом, так и в обратном направлении. Он может быть реализован только в тех коллекциях, в которых есть понятия следующего и предыдущего элемента и где элементы пронумерованы.

В интерфейс Listiterator добавлены следующие методы:

void add (Object element) — добавляет элемент element перед текущим элементом;

boolean hasPrevious () — возвращает true , если в коллекции есть элементы, стоящие перед текущим элементом;

int nextindex() — возвращает индекс текущего элемента; если текущим является последний элемент коллекции, возвращает размер коллекции;

Object previous () — возвращает предыдущий элемент и делает его текущим; Обозначение простых разрезов Положение секущей плоскости не отмечают и pазpез надписью не сопpовождают, если одновpеменно выполняются тpи условия:
а) секущая плоскость совпадает с плоскостью симметpии пpедмета в целом;
б) pазpез pасположен в непосpедственной пpоекционной связи с соответствующим изобpажением;
в) pазpез является гоpизонтальным, фpонтальным или пpофильным

int previous index () — возвращает индекс предыдущего элемента;

void set (Object element) заменяет текущий элемент элементом element;

выполняется сразу после next () или previous ().

Как видите, итераторы могут изменять коллекцию, в которой они работают, добавляя, удаляя и заменяя элементы. Чтобы это не приводило к конфликтам, предусмотрена исключительная ситуация, возникающая при попытке использования итераторов параллельно "родным" методам коллекции. Именно поэтому в листинге 6.5 действия с итератором заключены в блок tryUcatch(){} .

Изменим окончание листинга 6.5 с использованием итератора Listiterator .

// Текст листинга 6.1...

// ...

Listiterator lit = v.listlterator();                       // Получаем итератор вектора

                 // Указатель сейчас находится перед началом вектора 

try{

   while(lit.hasNext())                                   // Пока в векторе есть элементы

      System.out.println(lit.next());                     // Переходим к следующему 

                                                          // элементу и выводим его

         // Теперь указатель за концом вектора. Пройдем к началу

while (lit. hasPrevious ()) 

       System, out. printlnf lit. previblis ()); :

}catch (Exception e) ()

Интересно, что повторное применение методов next () и previous () друг за другом будет выдавать один и тот же текущий элемент. : Посмотрим теперь, какие возможности предоставляют классы-коллекции Java 2.