- •Содержание
- •Введение
- •1. Основные понятия языка Java иUml
- •Простое приложение
- •Простой апплет
- •Классы и объекты
- •Базовые типы данных
- •Операторы
- •Операторы управления
- •UmLкак язык описания объектно-ориентированных программ
- •If (obj instanceof java.Awt.Font) {/*операторы*/}
- •2. Библиотека стандартаJava_se Наследование
- •Использование super и this
- •Абстрактные классы и интерфейсы
- •Переопределение методов
- •Перегрузка методов
- •Полимофизм и расширяемость
- •Статические методы и полиморфизм
- •Внутренние (inner) классы
- •Вложенные классы (nested)
- •Анонимные классы
- •Использование библиотек классов Файлы. Потоки ввода/вывода
- •Обработка исключительных ситуаций
- •Коллекции
- •Графические интерфейсы пользователя
- •События и их обработка
- •Элементы управления
- •2. Библиотека стандартаJava_ee
- •ТехнологииJsp
Коллекции
Коллекции представляют собой реализацию абстрактных типов (структур) данных, поддерживающих две основные операции:
– вставка нового элемента в коллекцию;
– удаление элемента из коллекции.
В качестве дополнительных операций могут быть реализованы следующие: создать структуру данных, просмотреть элементы, подсчитать их количество и др.
Примером коллекции является стек (структура LIFO–LastInFirstOut), в котором всегда удаляется объект, вставленный последним. Для очереди (структураFIFO–FirstInFirstOut) используется другое правило удаления: всегда удаляется элемент, вставляемый первым. В абстрактных типах данных существует несколько видов очередей: двусторонние очереди, кольцевые очереди, обобщенные очереди, в которых запрещены повторяющиеся элементы. Стеки и очереди могут быть реализованы как на базе массива, так и на базе связного списка.
Коллекции объединены в библиотеку классов java.util ипредставляют собой контейнеры для хранения и манипулирования объектами. До появления Java 2 эта библиотека содержала классы только для работы с наиболее необходимыми структурами данных:Vector,Stack,Hashtable,BitSet, а также интерфейсEnumerationдля работы с элементами этих классов. Коллекции, появившиеся вJava2, представляют общую технологию хранения и доступа к объектам. Структура коллекций характеризует способ, с помощью которого программыJavaобрабатывают группы объектов. Коллекции – это динамические массивы, связные списки, деревья, множества, хэш-таблицы, стеки, очереди. В интерфейсеCollectionопределены статические методы, которые работают на всех коллекциях. Другой способ работы с элементами коллекций – использование методов интерфейсаIterator, который обеспечивает средства перечисления содержимого коллекции.

Рис 11 Упрощенная иерархия классов коллекций
Интерфейсы коллекции:
Collection– вершина иерархии коллекций;
List– расширяет коллекции для обработки списков;
Set– расширяет коллекции для обработки наборов (множеств), содержащих уникальные элементы;
Map– карта отображения. Карта отображений – это объект, который хранит пару “ключ-значение”. Поиск объекта (значения) облегчается по сравнению с множествами за счет того, что его можно найти по его уникальному ключу. Если элемент с указанным ключом отсутствует в карте, то возвращается значениеnull.
Классы карт отображений:
AbstractMap– реализует интерфейсMap;
HashMap– расширяетAbstractMap, используя хэш-таблицу, в которой ключи отсортированы относительно значений их хэш-кодов;
TreeMap– расширяетAbstractMap, используя дерево, где ключи расположены в виде дерева поиска в строгом порядке.
Интерфейсы карт:
Map– отображает уникальные ключи и значения;
Map.Entry– описывает пару “ключ-значение”;
SortedMap– содержит отсортированные ключи.
Все классы коллекций реализуют также интерфейс Serializable.
Методы интерфейса Collection:
boolean add(Object obj)– добавляетobj к вызывающей коллекции и возвращаетtrue, если объект добавлен, иfalse, еслиobjуже элемент коллекции. Так какObject– суперкласс для всех классов, то в коллекции можно хранить объекты любого типа, кроме базовых;
boolean addAll(Collection c)– добавляет все элементы коллекции к вызывающей коллекции;
void clear()– удаляет все элементы из коллекции;
boolean contains(Object obj)– возвращаетtrue, если вызывающая коллекция содержит элемент obj;
boolean equals(Object obj)– возвращаетtrue, если коллекции эквивалентны;
boolean isEmpty() – возвращаетtrue, если коллекция пуста;
Iterator iterator()– извлекает итератор;
boolean remove(Object obj)– удаляетobjиз коллекции;
int size()– возвращает количество элементов в коллекции;
Object[] toArray()– копирует элементы коллекции в массив объектов.
Для работы с элементами коллекции применяются следующие интерфейсы:
Comparator– для сравнения объектов;
Iterator,ListIterator,Map.Entry– для перечисления и доступа к объектам коллекции.
Интерфейс Iteratorиспользуется для доступа к элементам коллекции. Итератор располагается в коллекции между элементами.
Методы интерфейса Iterator:
Object next() – возвращает объект, на который указывает итератор, и передвигает текущий указатель на следующий итератор, предоставляя доступ к следующему элементу. Если следующий элемент коллекции отсутствует, то метод next() генерирует исключение NoSuchElementException;
booleanhasNext() – проверяет наличие следующего элемента, а в случае его отсутствия возвращаетfalse. Итератор при этом остается неизменным;
void remove() – удаляет объект, возвращенный последним вызовом методаnext().
Интерфейс ListIteratorрасширяет интерфейс Iteratorи предназначен в основном для работы со списками. Наличие методовObject previous(), int previousIndex() и boolean hasPrevious() обеспечивает обратную навигацию по списку. Метод int nextIndex() возвращает номер следующего итератора. Метод void add(Object ob) позволяет вставлять элемент в список в текущую позицию. Вызов метода void set(Object ob) производит замену текущего элемента списка на объект, передаваемый методу в качестве параметра.
Интерфейс Map.Entryпредназначен для извлечения ключей и значений карты с помощью методовgetKey()иgetValue()соответственно. Вызов методаsetValue(Object value)заменяет значение, ассоциированное с текущим ключом.
