Назад к вопросам
Junior
68
questionbank
Какие существуют реализации коллекций в языке программирования Java?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech 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 (самый низкий приоритет)