![]() КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
КоллекцииКоллекции представляют собой реализацию абстрактных типов (структур) данных, поддерживающих две основные операции: – вставка нового элемента в коллекцию; – удаление элемента из коллекции. В качестве дополнительных операций могут быть реализованы следующие: создать структуру данных, просмотреть элементы, подсчитать их количество и др. Примером коллекции является стек (структура LIFO – Last In First Out), в котором всегда удаляется объект, вставленный последним. Для очереди (структура FIFO – First In First Out) используется другое правило удаления: всегда удаляется элемент, вставляемый первым. В абстрактных типах данных существует несколько видов очередей: двусторонние очереди, кольцевые очереди, обобщенные очереди, в которых запрещены повторяющиеся элементы. Стеки и очереди могут быть реализованы как на базе массива, так и на базе связного списка. Коллекции объединены в библиотеку классов java.utilи представляют собой контейнеры для хранения и манипулирования объектами. До появления Java 2 эта библиотека содержала классы только для работы с наиболее необходимыми структурами данных: Vector, Stack, Hashtable, BitSet, а также интерфейс Enumeration для работы с элементами этих классов. Коллекции, появившиеся в Java 2, представляют общую технологию хранения и доступа к объектам. Структура коллекций характеризует способ, с помощью которого программы 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()генерирует исключение boolean hasNext()– проверяет наличие следующего элемента, а в случае его отсутствия возвращает false. Итератор при этом остается неизменным; void remove()– удаляет объект, возвращенный последним вызовом метода next(). ИнтерфейсListIterator расширяет интерфейсIterator и предназначен в основном для работы со списками. Наличие методов Интерфейс Map.Entry предназначен для извлечения ключей и значений карты с помощью методов getKey() и getValue() соответственно. Вызов метода setValue(Object value) заменяет значение, ассоциированное с текущим ключом.
|