Вебинары Разобраться в IT Реферальная программа Тесты
Программирование Аналитика Дизайн Маркетинг Управление проектами
07 Ноя 2024
2 мин
149

Использование и инициализация ArrayList в Java

Часто возникает путаница при работе с ArrayList в Java, особенно когда речь идет об инициализации и использовании начального размера ArrayList. Например, можно

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

ArrayList<Integer> arr = new ArrayList<Integer>(10);

Однако, если попытаться добавить элемент по конкретному индексу, который еще не был инициализирован, например:

arr.add(5, 10);

Это вызовет исключение IndexOutOfBoundsException. Почему же так происходит?

Начальный размер ArrayList в Java, задаваемый в конструкторе, это просто внутренняя оптимизация, связанная с использованием памяти. Когда задается начальный размер, выделенная память под массив остается пустой, и никакого реального пространства для объектов в этом массиве не создается. По этой причине, когда пытаются добавить элемент в пустую ячейку массива, возникает исключение.

Добавление элемента по индексу в ArrayList возможно только в том случае, если этот индекс уже инициализирован. В противном случае, необходимо добавлять элементы поочередно, начиная с индекса 0.

Функция add(int index, E element) позволяет вставить элемент в определенное место ArrayList, сдвигая все последующие элементы. Если же попытаться добавить элемент на место, которое еще не было инициализировано, будет выброшено исключение.

Важно понимать, что начальный размер ArrayList – это не количество элементов в нем, а лишь внутренняя оптимизация, позволяющая уменьшить количество операций изменения размера массива при его заполнении.

Добавить комментарий