Sobes.tech
Назад к вопросам
Junior
127
questionbank

Назовите основные интерфейсы Java Collections Framework (JCF) и их реализации.

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

sobes.tech AI

Что хотят услышать интервьюеры:

В Java Collections Framework основные интерфейсы — это Collection, List, Set, Queue и Map. Обычно ожидают, что будут названы их ключевые реализации и объяснено, чем они отличаются по порядку элементов, уникальности и быстродействию. Важно показать понимание, когда использовать ArrayList, HashSet, HashMap и другие базовые коллекции.

Определение:

Java Collections Framework — это набор стандартных интерфейсов и реализаций для хранения и обработки групп объектов. Базовая иерархия строится вокруг интерфейсов Collection и Map: Collection объединяет списки, множества и очереди, а Map хранит пары ключ-значение и не наследуется от Collection.

Основные интерфейсы и типичные реализации:

  • List — упорядоченная коллекция с доступом по индексу. Реализации: ArrayList, LinkedList, Vector (устаревающая).
  • Set — множество уникальных элементов. Реализации: HashSet, LinkedHashSet, TreeSet.
  • Queue / Deque — очередь и двусторонняя очередь. Реализации: LinkedList, ArrayDeque, PriorityQueue.
  • Map — отображение ключ → значение. Реализации: HashMap, LinkedHashMap, TreeMap, Hashtable (устаревающая).

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

import java.util.*;

public class Demo {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");

        Set<String> uniqueNames = new HashSet<>();
        uniqueNames.add("Alice");
        uniqueNames.add("Alice"); // дубль не добавится

        Map<Integer, String> users = new HashMap<>();
        users.put(1, "Alice");
        users.put(2, "Bob");

        Queue<String> queue = new ArrayDeque<>();
        queue.add("task1");
        queue.add("task2");
    }
}

Пояснение кода:

В этом примере ArrayList используется для списка имен, потому что важен порядок и доступ по индексу. HashSet хранит только уникальные строки, поэтому повторное добавление "Alice" не изменит коллекцию. HashMap хранит пользователей по идентификатору: ключом выступает Integer, значением — String. ArrayDeque показывает очередь, где элементы добавляются в конец и извлекаются в порядке добавления.

Ключевые моменты:

  • List сохраняет порядок и допускает дубликаты.
  • Set не допускает дубликаты.
  • Map хранит пары ключ-значение, ключи уникальны.
  • Hash*-реализации обычно не сохраняют порядок, но дают быстрый доступ.
  • LinkedHash* сохраняют порядок вставки.
  • Tree* хранят элементы в отсортированном порядке.