Middle
Опишете йерархията на колекциите в Java.
sobes.tech AI
Отговор от AI
Йерархията на колекциите в Java се основава на набор от интерфейси, които предоставят стандартен начин за представяне на групи от обекти.
Основни интерфейси:
Collection: кореновият интерфейс на йерархията. Определя основните операции, приложими към всички колекции: добавяне, премахване, проверка за наличие на елементи, определяне на размер.Set: колекция, която не съдържа дублиращи се елементи и няма определен ред на елементите.List: подредена колекция с възможност за достъп до елементите по индекс. Може да съдържа дублиращи се елементи.Queue: колекция, предназначена за съхранение на елементи преди обработка. Обикновено следва правилото FIFO (First-In, First-Out), но съществуват и други реализации.Deque: двупосочна опашка. Поддържа добавяне и премахване на елементи от двата края.Map: колекция, която съхранява двойки "ключ-стойност". Ключовете трябва да са уникални. Не разширява интерфейсаCollection.
Основни реализиращи класове (примери):
| Интерфейс | Реализиращи класове (примери) | Описание |
|---|---|---|
Set |
HashSet, LinkedHashSet, TreeSet |
Без дублиране. HashSet - без ред, LinkedHashSet - запазва реда на добавяне, TreeSet - сортиран. |
List |
ArrayList, LinkedList, Vector |
Подредена. ArrayList - базирана на масив, LinkedList - базирана на свързан списък, Vector - синхронизирана (остаряла). |
Queue |
LinkedList, PriorityQueue |
За обработка. LinkedList - FIFO, PriorityQueue - базирана на приоритети. |
Deque |
ArrayDeque, LinkedList |
Двупосочна опашка. ArrayDeque - базирана на масив, LinkedList - базирана на свързан списък. |
Map |
HashMap, LinkedHashMap, TreeMap, Hashtable |
Ключ-стойност. HashMap - без гарантиран ред, LinkedHashMap - запазва реда на добавяне/достъп, TreeMap - сортиран по ключове, Hashtable - синхронизирана (остаряла). |
Пример за използване на ArrayList:
// Създаване на ArrayList от низове
List<String> fruits = new ArrayList<>();
// Добавяне на елементи
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
// Достъп по индекс
String firstFruit = fruits.get(0); // Apple
// Размер на колекцията
int size = fruits.size(); // 3
Пример за използване на HashSet:
// Създаване на HashSet от цели числа
Set<Integer> numbers = new HashSet<>();
// Добавяне на елементи (дублиращите се се игнорират)
numbers.add(1);
numbers.add(2);
numbers.add(2); // Игнорира се
// Размер на колекцията
int size = numbers.size(); // 2
Пример за използване на HashMap:
// Създаване на HashMap: ключ - String, стойност - Integer
Map<String, Integer> ages = new HashMap<>();
// Добавяне на двойки ключ-стойност
ages.put("Alice", 30);
ages.put("Bob", 25);
// Получаване на стойност по ключ
int aliceAge = ages.get("Alice"); // 30
// Проверка за наличие на ключ
boolean hasBob = ages.containsKey("Bob"); // вярно