📦 1. Array Какво е? Фиксиран по размер контейнер за елементи от един и същи тип. Кога се използва? Когато знаем предварително колко елемента ще имаме. int[] numbers = {1, 2, 3}; System.out.println(numbers[0]); // 1 📦 2. ArrayList Какво е? Динамичен масив с бърз достъп по индекс. Кога се използва? Когато размерът на списъка може да се променя често. import java.util.ArrayList; ArrayList names = new ArrayList<>(); names.add("Иван"); System.out.println(names.get(0)); // Иван 📦 3. LinkedList Какво е? Двусвързан списък с лесно добавяне и премахване. Кога се използва? Когато често добавяме/махаме от началото или средата. import java.util.LinkedList; LinkedList list = new LinkedList<>(); list.add(10); list.add(20); System.out.println(list.getFirst()); // 10 📦 4. HashMap Какво е? Несортирана асоциативна структура от ключ–стойност. Кога се използва? Когато искаме бърз достъп по ключ. import java.util.HashMap; HashMap map = new HashMap<>(); map.put("А", 1); map.put("Б", 2); System.out.println(map.get("А")); // 1 📦 5. TreeMap Какво е? Сортирана по ключове асоциативна структура. Кога се използва? Когато искаме ключовете да са подредени. import java.util.TreeMap; TreeMap map = new TreeMap<>(); map.put("Б", 2); map.put("А", 1); System.out.println(map.firstKey()); // А 📦 6. HashSet Какво е? Множество без повторения, без определен ред. Кога се използва? Когато трябва да съхраним уникални елементи. import java.util.HashSet; HashSet set = new HashSet<>(); set.add("Java"); set.add("Java"); System.out.println(set.size()); // 1 📦 7. TreeSet Какво е? Сортирано множество без дубликати. Кога се използва? Когато искаме уникални елементи в нареден вид. import java.util.TreeSet; TreeSet set = new TreeSet<>(); set.add(3); set.add(1); System.out.println(set.first()); // 1 📦 8. Stack Какво е? Стек (LIFO – последен влязъл, пръв излиза). Кога се използва? При рекурсивни алгоритми, браузър история и др. import java.util.Stack; Stack stack = new Stack<>(); stack.push(10); stack.push(20); System.out.println(stack.pop()); // 20 📦 9. Queue Какво е? Опашка (FIFO – първи влязъл, първи излиза). Кога се използва? При обработка на събития, задачи и т.н. import java.util.Queue; import java.util.LinkedList; Queue queue = new LinkedList<>(); queue.add("A"); queue.add("B"); System.out.println(queue.poll()); // A 📦 10. Deque (Double-Ended Queue) Какво е? Опашка с добавяне/премахване и от двете страни. Кога се използва? При буфери или палиндромни проверки. import java.util.ArrayDeque; import java.util.Deque; Deque deque = new ArrayDeque<>(); deque.addFirst("начало"); deque.addLast("край"); System.out.println(deque.getFirst()); // начало 📦 11. PriorityQueue Какво е? Приоритетна опашка – елементите се извеждат според приоритет. Кога се използва? При задачи със спешност, алгоритъм на Дейкстра и др. import java.util.PriorityQueue; PriorityQueue pq = new PriorityQueue<>(); pq.add(30); pq.add(10); System.out.println(pq.poll()); // 10 📦 12. Hashtable Какво е? Стара, синхронизирана хеш таблица. Кога се използва? Рядко – заменена от HashMap. import java.util.Hashtable; Hashtable table = new Hashtable<>(); table.put("Ключ", "Стойност"); System.out.println(table.get("Ключ")); // Стойност 📦 13. Vector Какво е? Стара версия на ArrayList, синхронизирана. Кога се използва? Почти никога в съвременен код. import java.util.Vector; Vector vector = new Vector<>(); vector.add(100); System.out.println(vector.get(0)); // 100 📦 14. BitSet Какво е? Масив от бита (boolean стойности). Кога се използва? За ефективни побитови операции. import java.util.BitSet; BitSet bits = new BitSet(); bits.set(2); System.out.println(bits.get(2)); // true