Можливо кожен, хто в тій чи іншій мірі займається програмуванням стикався з таким поняттям як колекції. А хто не займається — найімовірніше, чув про таке явище.
Так що ж таке колекції з точки зору світу інформаційних технологій?
Виходячи з визначень спеціалізованих ресурсів, колекції можна розглядати як сховища або контейнери, які підтримують різні способи накопичення і впорядкування об'єктів з метою забезпечення можливостей ефективного доступу до них. Колекція — це група окремих об'єктів, представлених як єдине ціле.
Колекції є реалізацією абстрактних структур даних, за допомогою яких можна проводити основні маніпуляції над елементами цих колекцій: додавання, видалення, зміна.
Колекції в Java
А що щодо колекцій в Java? Мова Java надає цікаве рішення — Java Collections Framework.
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.