Назад к вопросам
Middle
73
questionbank

Опишите иерархию коллекций в Java.

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Иерархия коллекций в Java основана на наборе интерфейсов, предоставляющих стандартный способ представления групп объектов.

Основные интерфейсы:

  • Collection: корневой интерфейс иерархии. Определяет базовые операции, применимые ко всем коллекциям: добавление, удаление, проверка наличия элементов, определение размера.
  • Set: коллекция, не содержащая дубликатов и не имеющая определенного порядка элементов.
  • List: упорядоченная коллекция с возможностью доступа к элементам по индексу. Может содержать дубликаты.
  • Queue: коллекция, предназначенная для хранения элементов перед обработкой. Обычно следует правилу FIFO (First-In, First-Out), но существуют и другие реализации.
  • Deque: двусторонняя очередь. Поддерживает добавление и удаление элементов с обоих концов.
  • Map: коллекция, хранящая пары "ключ-значение". Ключи должны быть уникальными. Не расширяет интерфейс Collection.

Основные реализующие классы (примеры):

Интерфейс Реализующие классы (примеры) Описание
Set HashSet, LinkedHashSet, TreeSet Без дубликатов. HashSet - без порядка, LinkedHashSet - сохраняет порядок добавления, TreeSet - сортированный.
List ArrayList, LinkedList, Vector Упорядоченная. ArrayList - на основе массива, LinkedList - на основе связного списка, Vector - синхронизированный (устарел).
Queue LinkedList, PriorityQueue Для обработки. LinkedList - FIFO, PriorityQueue - на основе приоритетов.
Deque ArrayDeque, LinkedList Двусторонняя очередь. ArrayDeque - на основе массива, LinkedList - на основе связного списка.
Map HashMap, LinkedHashMap, TreeMap, Hashtable Ключ-значение. HashMap - без гарантированного порядка, LinkedHashMap - сохраняет порядок добавления/доступа, TreeMap - сортированный по ключам, Hashtable - синхронизированный (устарел).

Пример использования ArrayList:

// Создание ArrayList of strings
List<String> fruits = new ArrayList<>();
// Добавление элементов
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
// Доступ по индексу
String firstFruit = fruits.get(0); // Apple
// Размер коллекции
int size = fruits.size(); // 3

Пример использования HashSet:

// Создание HashSet of integers
Set<Integer> numbers = new HashSet<>();
// Добавление элементов (дубликаты игнорируются)
numbers.add(1);
numbers.add(2);
numbers.add(2); // Игнорируется
// Размер коллекции
int size = numbers.size(); // 2

Пример использования HashMap:

// Создание HashMap: ключ - String, значение - Integer
Map<String, Integer> ages = new HashMap<>();
// Добавление пар ключ-значение
ages.put("Alice", 30);
ages.put("Bob", 25);
// Получение значения по ключу
int aliceAge = ages.get("Alice"); // 30
// Проверка наличия ключа
boolean hasBob = ages.containsKey("Bob"); // true