Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4 конспект лекций ООП Java.doc
Скачиваний:
28
Добавлен:
03.05.2015
Размер:
962.05 Кб
Скачать

Коллекции

Коллекции представляют собой реализацию абстрактных типов (структур) данных, поддерживающих две основные операции:

–   вставка нового элемента в коллекцию;

–   удаление элемента из коллекции.

В качестве дополнительных операций могут быть реализованы следующие: создать структуру данных, просмотреть элементы, подсчитать их количество и др.

Примером коллекции является стек (структура 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)заменяет значение, ассоциированное с текущим ключом.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]