Sobes.tech
Junior

Кои са реализациите на колекциите в езика за програмиране Java?

sobes.tech AI

Отговор от AI

  • Интерфейси:

    • Collection: Основен интерфейс за всички колекции.
    • List: Подредена колекция (с индекси).
    • Set: Колекция без дублиращи се елементи.
    • SortedSet: Подредена колекция без дублиращи се елементи, елементите са сортирани.
    • Map: Асоциативен масив (ключ-стойност).
    • SortedMap: Сортиран асоциативен масив по ключове.
    • Queue: Колекция за съхранение на елементи преди тяхната обработка.
    • Deque: Двупосочна опашка.
  • Класове (основни реализации):

    • За List:

      • ArrayList: Динамичен масив. Бърз достъп по индекс, бавни операции по вмъкване/изтриване в средата.
      • LinkedList: Двусвързан списък. Бавен достъп по индекс, бързи операции по вмъкване/изтриване в средата.
      • Vector: Застарял синхронизиран аналог на ArrayList.
      • Stack: Подклас на Vector, реализиращ стек (LIFO).
    • За Set:

      • HashSet: Реализация на базата на хеш таблица. Не гарантира реда на елементите.
      • LinkedHashSet: Реализация на базата на хеш таблица и свързан списък. Запазва реда на вмъкване.
      • TreeSet: Реализация на базата на червено-черно дърво. Елементите са сортирани във възходящ ред.
    • За Map:

      • HashMap: Реализация на базата на хеш таблица. Не гарантира реда на двойките ключ-стойност.
      • Hashtable: Застарял синхронизиран аналог на HashMap.
      • LinkedHashMap: Реализация на базата на хеш таблица и свързан списък. Запазва реда на вмъкване.
      • TreeMap: Реализация на базата на червено-черно дърво. Параметрите ключ-стойност са сортирани по ключ.
    • За Queue:

      • PriorityQueue: Опашка с приоритет. Елементите се извличат според естествения им ред или компаратор.
      • ArrayDeque: Реализация на двупосочна опашка на базата на масив.
  • Утилити:

    • Collections: Предоставят статични методи за работа с колекции (сортиране, търсене, синхронизиране и др.).
// Пример за използване на ArrayList
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
System.out.println(names.get(0)); // Alice
// Пример за използване на HashSet
Set<Integer> numbers = new HashSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(1); // Дубликат няма да бъде добавен
System.out.println(numbers.size()); // 2
// Пример за използване на HashMap
Map<String, Integer> ages = new HashMap<>();
ages.put("Alice", 30);
ages.put("Bob", 25);
System.out.println(ages.get("Alice")); // 30
// Пример за използване на PriorityQueue
Queue<Integer> priorityQueue = new PriorityQueue<>();
priorityQueue.add(3);
priorityQueue.add(1);
priorityQueue.add(2);
System.out.println(priorityQueue.poll()); // 1 (най-нисък приоритет)