Коллекции

Для хранения групп объектов одинакового типа в языке программирования Java разработан Collections Framework.

Он отвечает следующим требованиям:

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

Для реализации этих целей был разработан набор интерфейсов, на базе которых были созданы готовые коллекции, позволяющие разрабатывать собственные.

Collections Framework состоит из:

  • Интерфейсов Эти интерфейсы представляют коллекции и позволяют манипулировать данными таким образом, чтобы создавать собственные коллекции для специфичных задач.
  • Классов, реализующих интерфейсы Конкретные имплементации интерфейсов, которые представляют собой структуры данных.
  • Алгоритмов Набор методов, который позволяет эффективно выполнять такие операции, как поиск и сортировка в структурах данных Collections Framework.

Интерфейсы

Давайте рассмотрим различные интерфейсы Collections Framework:

  • Collection Этот интерфейс позволяет нам работать с группами объектов.
  • List Наследует класс Collection и является упорядоченным списком элементов.
  • Set Наследует класс Collection и содержит множество уникальных элементов.
  • SortedSet Наследует Set и является упорядоченным множеством уникальных элементов.
  • Map Хранит уникальные элементы типа “ключ – значение”.
  • Map.Entry Описывает элемент в "Map". Внутренний класс Map.
  • SortedMap Расширяет класс Map и сортирует элементы по возрастанию.
  • Enumeration Интерфейс, который определяет методы для “перебора” элементов в коллекции. Заменен интерфейсом Iterator.

Классы

В языке программирования Java разработан набор стандартных классов, которые представляют базовые структуры данных. Некоторые из них являются полной реализацией и готовы к использованию, а некоторые – являются лишь каркасами для будущих коллекций.

Рассмотрим их:

  • AbstractCollection Этот класс реализовывает большинство методов класса Collection.
  • AbstractList Наследует класс AbstractCollection и реализовывает большинство методов интерфейса List.
  • AbstractSequentialList Наследует класс AbstractList для использования коллекции с последовательным, а не свободным доступом к элементам.
  • AbstractSet
    Наследует AbstractCollection и реализовывает большинство методов интерфейса Set.

  • AbstractMap
    Реализовывает большинство методов интерфейса Map.

  • ArrayList(ссылка на пример)
    Наследует абстрактный класс AbstractList и является реализацией динамического массива.

  • LinkedList(ссылка на пример)
    Наследует AbstractSequentialList и является реализацией связного списка.

  • HashSet(ссылка на пример)
    Наследует AbstractSet и является реализацией хэш-таблицы.

  • LinkedHashSet(ссылка на пример)
    Наследует HashSet и запоминает порядок добавления элементов.

  • TreeSet(ссылка на пример)
    Наследует AbstractSet и является реализацией красно-черного дерева (множества уникальных элементов в виде дерева).

  • HashMap(ссылка на пример)
    Наследует AbstractMap и является реализацией хэш-таблицы.

  • TreeMap(ссылка на пример) Наследует AbstractMap для создания дерева.

  • WeekHashMap(ссылка на пример) Наследует AbstractMap для использования хэш-таблицы со “слабыми” ключами.
  • LinkedHashMap(ссылка на пример) Наследует HashMap для запоминания порядка добавления элементов.
  • IdentityHashMap(ссылка на пример) Наследует AbstractMap и использует равенство ссылок при сравнении документов.

Алгоритмы

Collections Framework имеет несколько алгоритмов, которые могут быть применены к коллекциям и структурам, хранящим элементы типа “ключ-значение” (Maps).

Эти алгоритмы определены в виде статических методов внутри классов коллекций.

Рассмотрим сами алгоритмы и пример простого приложения с их использованием.

Перейдите по ЭТОЙ ССЫЛКЕ.


Компаратор

Такие структуры данных, как TreeMap и TreeSet сортируют элементы и хранят их. Для сравнения этих элементов разработана такая сущность, как компаратор (Comaprator).

Более подробно компаратор описан на странице, перейти на которую можно по ЭТОЙ ССЫЛКЕ.


Итератор

Часто мы сталкиваемся с ситуацией, когда нам необходимо отобразить все элементы нашей коллекции. Для этого в языке программирования Java разработана такая сущность, как Iterator.

Iterator позволяет нам “пробежаться” по коллекции, получить и удалить элементы.

Listerator наследует Iterator и позволяет нам пробежаться по коллекции в обоих направлениях, а самое главное – позволяет модифицировать элементы.

Более подробно Iterator описан на странице, перейти на которую можно по ЭТОЙ ССЫЛКЕ.

results matching ""

    No results matching ""