Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab08.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
247.3 Кб
Скачать

3.2. Реализации коллекций и алгоритмы

Реализации являются действительными объектами данных, которые воплощают в жизнь ключевые интерфейсы коллекций, описанные в предыдущем разделе.

Существуют три типа реализаций:

  • общецелевые реализации;

  • упаковщики;

  • альтернативные (convenience) реализации.

Общецелевые реализации и их связь с интерфейсами и структурами данных представлены в таблице:

Интерфейс

Реализации

Хеш-таблица

Изменяемый массив

Сбалансирован-ное дерево

Связанный список

Set

HashSet

TreeSet

LinkedHashSet

List

ArrayList

LinkedList

Map

HashMap

WeekHashMap

TreeMap

LinkedHashMap

Все реализации имеют не только схожие имена, но и схожее поведение. Все они реализуют каждую из операций, определенных в своем интерфейсе. Все позволяют использовать элементы, ключи и значения с константой null.

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

3.2.1. Классы AbstractSet, AbstractList, AbstractSequentialList и AbstractMap

Класс AbstractSet является суперклассом для классов HashSet и TreeSet и содержит реализации методов equals() и removeAll() интерфейса Set.

Класс AbstractList является суперклассом для классов AbstractSequentialList, ArrayList, Vector и содержит реализации двух методов add(), методов addAll(), clear(), equals(), get(), indexOf(), iterator(), lastIndexOf(), listIterator(), remove(), set(), sublist() интерфейса List.

Класс AbstractList содержит также метод

protected void removeRange(int fromIndex, int toIndex)

который позволяет удалить элементы списка в заданном диапазоне.

Класс AbstractSequentialList является суперклассом для класса LinkedList и содержит реализации методов add(), addAll(), get(), iterator(), listIterator(), remove()и set() интерфейса List.

Класс AbstractMap является суперклассом для классов HashMap, TreeMap и WeakHashMap и содержит реализации методов clear(), containsKey(), containsValue(), entrySet(), equals(), get(), isEmpty(), keySet(), put(), putAll(), remove(), size() и values()интерфейса Map. Кроме того, класс AbstractMap содержит метод

protected Object clone()

позволяющий получить пустую копию отображения (ключи и значения не копируются), а также метод

public String toString()

позволяющий преобразовать отображение в строковое представление.

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