Назад к вопросам
Junior
70
questionbank

Какие коллекции существуют в Java?

Sobes Copilot

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

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

sobes.tech AI

Collection - корневой интерфейс иерархии коллекций. Он представляет собой группу объектов, известных как элементы. Расширяется интерфейсами List, Set, Queue.

List - упорядоченная коллекция, допускающая дубликаты. Реализации:

  • ArrayList: Динамический массив, обеспечивает быстрый доступ по индексу, медленное удаление/вставку в середине.
  • LinkedList: Двусвязный список, обеспечивает быструю вставку/удаление, медленный доступ по индексу.
  • Vector: Синхронизированный аналог ArrayList, устарел, использовать только при необходимости потокобезопасности.
  • Stack: Наследуется от Vector, реализует LIFO (Last-In, First-Out).

Set - неупорядоченная коллекция, не допускающая дубликаты. Реализации:

  • HashSet: Использует хэш-таблицу, быстрые операции добавления, удаления, поиска, порядок элементов не гарантируется.
  • LinkedHashSet: Сохраняет порядок добавления элементов, использует хэш-таблицу и связанный список.
  • TreeSet: Хранит элементы в отсортированном порядке, использует красно-черное дерево.

Queue - коллекция, предназначенная для хранения элементов перед обработкой (очередь). Обычно работает по принципу FIFO (First-In, First-Out). Реализации:

  • LinkedList: Может использоваться как Queue.
  • ArrayDeque: Двусторонняя очередь, может работать как стека и очередь.
  • PriorityQueue: Элементы извлекаются в порядке приоритета.

Map - интерфейс, не является частью иерархии Collection, но часто рассматривается вместе с ней. Хранит пары ключ-значение, ключи уникальны. Реализации:

  • HashMap: Использует хэш-таблицу, быстрые операции, порядок элементов не гарантируется.
  • LinkedHashMap: Сохраняет порядок добавления или доступа к элементам.
  • TreeMap: Хранит пары ключ-значение в отсортированном по ключам порядке, использует красно-черное дерево.
  • HashTable: Синхронизированный аналог HashMap, устарел.

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

import java.util.*;

public class CollectionExamples {

    public static void main(String[] args) {
        // ArrayList
        List<String> arrayList = new ArrayList<>();
        arrayList.add("Apple");
        arrayList.add("Banana");
        System.out.println(arrayList.get(0));

        // HashSet
        Set<Integer> hashSet = new HashSet<>();
        hashSet.add(1);
        hashSet.add(2);
        hashSet.add(1); // Дубликат не добавится
        System.out.println(hashSet.size());

        // HashMap
        Map<String, String> hashMap = new HashMap<>();
        hashMap.put("key1", "value1");
        hashMap.put("key2", "value2");
        System.out.println(hashMap.get("key1"));
    }
}

Краткая таблица:

Интерфейс Основные реализации Особенности
List ArrayList, LinkedList Упорядоченность, допускает дубликаты
Set HashSet, TreeSet Не допускает дубликаты
Queue LinkedList, PriorityQueue Хранение для обработки, обычно FIFO
Map HashMap, TreeMap Пары ключ-значение, уникальные ключи