Основи Java Коллекцій

Основи Java Коллекцій

  • 13 жовтня, 2020
  • читати 3 хв
Євген Мица
Євген Мица Android Developer у emcodio, Викладач Комп'ютерної школи Hillel.

Можливо кожен, хто в тій чи іншій мірі займається програмуванням стикався з таким поняттям як колекції. А хто не займається — найімовірніше, чув про таке явище.

Так що ж таке колекції з точки зору світу інформаційних технологій?

Виходячи з визначень спеціалізованих ресурсів, колекції можна розглядати як сховища або контейнери, які підтримують різні способи накопичення і впорядкування об'єктів з метою забезпечення можливостей ефективного доступу до них. Колекція — це група окремих об'єктів, представлених як єдине ціле.

Колекції є реалізацією абстрактних структур даних, за допомогою яких можна проводити основні маніпуляції над елементами цих колекцій: додавання, видалення, зміна.

Колекції в 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 можна представити таким чином:

Рекомендуємо курс по темі

Базові інтерфейси 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.