Sobes.tech
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