Найти в Дзене
Java Джун

Класс ArrayList интерфейса List, Java Collections Framework

Что такое ArrayList ArrayList — это в первую очередь упорядоченный набор данных: слово «упорядоченный» означает, что у каждого элемента в наборе есть свое месторасположение. Оно описывается индексом — числом, хранящим положение элемента. Индексы начинаются с нуля. Первый элемент в массиве будет иметь индекс 0, второй — 1, и так далее. Для чего нужен ArrayList Задача любого массива, в том числе динамического, — хранить структурированную и упорядоченную информацию, какой-то набор элементов, для которых важно расположение. А применить его можно огромным количеством способов: для хранения и использования данных, реализации программных структур и алгоритмов, математических или физических операций и многого другого. Еще одна задача ArrayList — упростить работу с массивами благодаря обилию специальных методов, о которых мы поговорим ниже. Как устроен ArrayList Внутри структуры данных — массив фиксированного размера, который удаляется и создается заново с новой длиной, когда внутр
Оглавление

Что такое ArrayList

ArrayList — это в первую очередь упорядоченный набор данных: слово «упорядоченный» означает, что у каждого элемента в наборе есть свое месторасположение. Оно описывается индексом — числом, хранящим положение элемента. Индексы начинаются с нуля. Первый элемент в массиве будет иметь индекс 0, второй — 1, и так далее.

Для чего нужен ArrayList

Задача любого массива, в том числе динамического, — хранить структурированную и упорядоченную информацию, какой-то набор элементов, для которых важно расположение. А применить его можно огромным количеством способов: для хранения и использования данных, реализации программных структур и алгоритмов, математических или физических операций и многого другого.

Еще одна задача ArrayList — упростить работу с массивами благодаря обилию специальных методов, о которых мы поговорим ниже.

Как устроен ArrayList

Внутри структуры данных — массив фиксированного размера, который удаляется и создается заново с новой длиной, когда внутри ArrayList меняется количество объектов. Технически это выглядит так:

  • разработчик отдает команду записать новый элемент;
  • внутри ArrayList создается копия текущего массива, который там хранится, но с большей длиной;
  • в нужное место расширенной копии добавляется новый элемент;
  • старый массив удаляется.

Чтобы оптимизировать этот процесс, новая длина по умолчанию в полтора раза больше старой — так массив не приходится «переписывать» слишком часто.

Ниже продемонстрирован цикл, поочередно добавляющий 15 элементов:

ArrayList<String> list = new ArrayList<String>();

list.add("1");

list.add("9");

-3

list.add("10");

При добавлении 11-го элемента, проверка показывает что места в массиве нет. Соответственно создается новый массив и вызывается System.arraycopy(). После этого добавление элементов продолжается

list.add("14");

-5