Возможно каждый, кто в той или иной степени занимается программированием сталкивался с таким понятием как коллекции. А кто не занимается — вероятнее всего, слышал о таком явлении.
Так что же такое коллекции с точки зрения мира информационных технологий?
Исходя из определений специализированных ресурсов, коллекции можно рассматривать как хранилища или контейнеры, поддерживающие различные способы накопления и упорядочения объектов с целью обеспечения возможностей эффективного доступа к ним. Коллекция – это группа отдельных объектов, представленных как единое целое.
Коллекции являются реализацией абстрактных структур данных, при помощи которых можно проводить основные манипуляции над элементами этих коллекций: добавление, удаление, изменение.
Коллекции в Java
А что насчет коллекций в Java? Язык Java предоставляет интересное решение — Java Collections Framework. Обучение Java онлайн рассматривает в том числе и этот фреймворк.
Java Collections Framework — это унифицированная архитектура для представления коллекций и управления ими.
Данный фреймворк содержит: интерфейсы, реализации интерфейсов, алгоритмы.
Интерфейсы — абстрактные типы данных, которые представляют коллекции. Интерфейсы позволяют манипулировать коллекциями независимо от деталей их представления.
Реализации интерфейсов — конкретные реализации интерфейсов коллекции. Выступают структурами данных многократного использования. Реализация интерфейсов, в Java Collections Framework, происходит через соответствующие классы.
Базовые интерфейсы Java Collections Framework – Collection, Set, SortedSet, List, Queue, Deque, Map, SortedMap.
Однако, примечательно то, что интерфейс Map не реализует интерфейс Collection. Дерево Map — отдельно от дерева Collection, но при погружении в рассмотрение вопросов о коллекциях в Java, данные иерархии, как правило, рассматриваются совместно. Интерфейс Collection (пакет — java.util.Collection) и интерфейс Map (java.util.Map) являются двумя основными корневыми интерфейсами классов Java коллекций.
Схематично базовые интерфейсы Java Collections Framework можно представить следующим образом:
Рекомендуем курс по теме
- Collection — корень иерархии коллекции. Коллекция представляет собой группу объектов, известных как ее элементы. Интерфейс Collection реализуют все коллекции и используется для передачи коллекций и манипулирования ими, когда требуется максимальная универсальность.
- Set (набор) — коллекция, которая не может содержать повторяющиеся элементы.
- SortedSet — набор, который поддерживает свои элементы в порядке возрастания. Несколько дополнительных операций предоставляются, чтобы воспользоваться преимуществами упорядочивания/сортировки.
- List (список) — упорядоченная коллекция (иногда называется последовательностью). Может содержать повторяющиеся элементы.
- Queue (очередь) — коллекция, используемая для хранения нескольких элементов перед обработкой. Помимо базовых операций сбора, очередь обеспечивает дополнительные операции вставки, извлечения и проверки. Очереди обычно, но не обязательно, упорядочивают элементы в порядке FIFO (first-in-first-out — первым вошел — первым вышел).
- Deque — коллекция, используемая для хранения нескольких элементов перед обработкой. Помимо базовых операций по сбору Deque обеспечивает дополнительные операции вставки, извлечения и проверки. Deque наследует интерфейс Queue и представляет функционал для двунаправленных очередей. Deque может использоваться как FIFO (first-in-first-out — первым вошел — первым вышел) и LIFO (last-in-first-out — последним вошел — первым вышел). Все новые элементы могут быть вставлены, извлечены и удалены с обоих концов.
- Map — объект, который сопоставляет ключи со значениями. Map не может содержать дубликаты ключей, каждый ключ может соответствовать максимум одному значению.
- SortedMap — Map, который поддерживает свои отображения в порядке возрастания ключа. SortedMap можно рассматривать как аналог SortedSet для иерархии Map.
Java Collections Framework включает в себя множество различных структур данных, доступных в JDK. Они чаще всего обеспечивают все потребности в процессе реализации логики приложения.
Если нужно, разработчик может осуществить собственную реализацию, чтобы расширить или переопределить существующую логику. Это также применимо для создания своей реализации подходящего интерфейса с нуля. Можно найти и готовые альтернативные решения или дополнения к Java Collections Framework. Самые популярные из них — Google Guava и Commons Collections.