Junior
Разкажете за йерархията на колекциите в Java.
sobes.tech AI
Отговор от AI
Йерархията на колекциите в Java е изградена около два основни интерфейса: Collection и Map. Тя е дефинирана в пакета java.util.
Collection<E>: Основен интерфейс за повечето колекции. Представлява група от елементи. Не гарантира ред или уникалност на елементите.List<E>: Подредена колекция (последователност). Елементите имат определен индекс. Може да съдържа дублиращи се елементи.ArrayList<E>: Реализация на базата на масив. Бърз произволен достъп, бавни вмъквания/изтривания в средата.LinkedList<E>: Реализация на базата на свързан списък. Бавен произволен достъп, бързи вмъквания/изтривания в началото/края.Vector<E>: Стар, синхронизиран клас. Подобен наArrayList, но потокобезопасен (и по-малко ефективен).Stack<E>: Стар клас, разширяващVector, реализиращ поведение на стек (LIFO).
Set<E>: Колекция, съдържаща уникални елементи.HashSet<E>: Реализация на базата на хеш таблица. Не сортирана. Бързи операцииadd,remove,contains.LinkedHashSet<E>: Запазва реда на вмъкване.SortedSet<E>: Подреден набор.TreeSet<E>: Реализация на базата на червено-черно дърво. Гарантира сортиран ред.
Queue<E>: Колекция, предназначена за съхранение на елементи преди обработка, често във FIFO ред.PriorityQueue<E>: Реализация на приоритетна опашка. Елементите се извличат според приоритета им.Deque<E>: (Двупосочна опашка) Двупосочна редица. Поддържа операции по вмъкване и изтриване от двата края.ArrayDeque<E>: Реализация наDequeна базата на динамичен масив. По-бърза отLinkedListпри използване като стек или опашка.
Map<K, V>: Обект, който картографира ключове към стойности. Ключовете са уникални, стойностите могат да се повтарят.HashMap<K, V>: Реализация на базата на хеш таблица. Не сортирана. Бързи операцииput,get,remove.LinkedHashMap<K, V>: Запазва реда на вмъкване или достъп.SortedMap<K, V>: Подредена карта по ключове.TreeMap<K, V>: Реализация на базата на червено-черно дърво. Гарантира сортиран ред по ключове.
Hashtable<K, V>: Стар, синхронизиран клас. Подобен наHashMap, но потокобезопасен (и по-малко ефективен).
Основни интерфейси:
| Интерфейс | Описание | Подредба | Уникалност | Дублиращи стойности |
|---|---|---|---|---|
Collection |
Група елементи | +/- | +/- | Да |
List |
Подредена колекция | Да | Не | Да |
Set |
Колекция от уникални елементи | +/- | Да | Не |
Queue |
Колекция за обработка (FIFO) | Да | Не | Да |
Deque |
Двупосочна опашка | Да | Не | Да |
Map |
Карта ключ-стойност | +/- | По ключ | Да |
SortedSet |
Подреден набор | Да | Да | Не |
SortedMap |
Подредена карта по ключове | Да | По ключ | Да |
Пример за използване:
// Пример с ArrayList
List<String> имена = new ArrayList<>();
имена.add("Alice");
имена.add("Bob");
System.out.println(имена.get(0)); // Alice
// Пример с HashSet
Set<Integer> уникалниЧисла = new HashSet<>();
уникалниЧисла.add(1);
уникалниЧисла.add(2);
уникалниЧисла.add(1); // Дублиращият се елемент се игнорира
System.out.println(уникалниЧисла.size()); // 2
// Пример с HashMap
Map<String, Integer> възрасти = new HashMap<>();
възрасти.put("Alice", 30);
възрасти.put("Bob", 25);
System.out.println(възрасти.get("Alice")); // 30