Добавить элемент(ы) по указанному индексу в ArrayList в Java

Класс Java ArrayList является частью фреймворка Collection. ArrayList — это реализация структуры данных массива с изменяемым размером, которая автоматически увеличивается и уменьшается при добавлении или удалении элементов во время выполнения, когда это необходимо,

Новые элементы всегда добавляются в конец текущего arraylist, если только мы специально не укажем индекс, куда мы хотим добавить новые элементы.

 ArrayList arraylist = new ArrayList<>();arraylist.add("яблоко"); // [яблоко]arraylist.add("банан"); // [яблоко, банан]//Добавление нового элемента в позицию индекса 1arraylist.add(1, "виноград"); // [яблоко, виноград, банан]//Добавление нескольких элементов элемента в позицию индекса 0arraylist.add(0, Arrays.asList("дата", "гуава")); // [дата, гуава, яблоко, виноград, банан]

Давайте узнаем об этом более подробно.

1. Методы ArrayList add() и addAll()

Метод ArrayList.add() вставляет указанный элемент в указанную позицию в этом списке. Он сдвигает элемент, находящийся в этой позиции(если есть), и все последующие элементы вправо(добавляет единицу к их индексам). Обратите внимание, что индексы начинаются с 0.

Функция add() не возвращает никакого значения.

void ArrayList.add(index, itemToAdd);

Аналогично, если нам нужно добавить несколько элементов в arraylist, мы можем использовать метод addAll(), который берет другую коллекцию и добавляет ее в указанное местоположение индекса. Он возвращает true, если элементы были успешно добавлены, в противном случае возвращает false.

boolean ArrayList.addAll(index, collectionOfItems);

2. Примеры добавления элементов по указанному индексу

Давайте рассмотрим пример добавления элемента в позицию индекса 1.

ArrayList<String> namesList = new ArrayList<>(Arrays.asList("alex", "brian", "charles"));namesList.add(1, "Lokesh");System.out.println(namesList); //[alex, Lokesh, brian, charles]

Аналогично мы можем добавить несколько элементов в список, передав другой список методу addAll().

В следующем примере мы добавляем новые элементы в начало списка. Это перемещает все существующие элементы вправо.

ArrayList<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));list.addAll(0, List.of("1", "2", "3"));System.out.println(list); //[1, 2, 3, a, b, c]

3. Остерегайтесь IndexOutOfBoundsException

Если индекс аргумента выходит за пределы, методы add() и addAll() выдают исключение IndexOutOfBoundsException.

Assertions.assertThrows(IndexOutOfBoundsException.class,() -> {namesList.add(10, "Lokesh");});

4. Заключение

Класс ArrayList предоставляет удобные методы для добавления элементов по указанному индексу. Эти методы добавляют новые элементы и сдвигают текущий элемент, а также последующие элементы вправо.

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

Исходный код на Github

Прокрутить вверх