Gymterview
middle

Необходимо добавить 1 млн элементов — какую структуру вы используете

Ответ зависит от того, в какую часть списка происходит вставка и какие операции планируются далее.

Если вставка в конец и затем произвольный доступ — ArrayList с заданной начальной емкостью: new ArrayList<>(1_000_000). Это избавит от многократного расширения массива и копирования данных. ArrayList будет расходовать меньше памяти и обеспечит быстрый доступ по индексу.

Если вставка преимущественно в начало — LinkedList или ArrayDeque будут быстрее, т.к. не требуют сдвига элементов.

Если порядок не важен и нужна проверка на уникальность — HashSet с new HashSet<>(1_400_000, 0.75f) (initialCapacity с запасом, чтобы избежать рехеширования).

На практике для миллиона элементов ArrayList с предзаданной емкостью — наиболее универсальный выбор: предсказуемая производительность, минимальное потребление памяти и cache-friendly доступ.

На собеседовании: не давайте ответ сразу. Задайте уточняющие вопросы: куда вставляем, что потом делаем с данными, есть ли ограничения по памяти. Это покажет системное мышление.