Класс ArrayList

  1. Особенности класса ArrayList
  2. Методы класса ArrayList для добавления элементов
  3. Методы класса ArrayList для удаления элементов
  4. Пример добавления элементов в ArrayList
  5. Пример удаления элементов из ArrayList
  6. Пример использования метода removeAll() класса ArrayList
  7. Пример использования методов addAll(), clear() класса ArrayList
  8. Пример использования метода retainAll() класса ArrayList
  9. Получение массива из ArrayList

1. Особенности класса ArrayList

Класс ArrayList поддерживает динамические массивы, которые могут расти по мере необходимости. Элементы ArrayList могут быть абсолютно любых типов в том числе и null. Элементы могут повторяться.

Класс ArrayList реализует интерфейс List

Объект класса ArrayList, содержит свойства elementData и size. Хранилище значений elementData есть ни что иное как массив определенного типа (указанного в generic).

У этого класса есть следующие конструкторы: 

  • ArrayList ()
  • ArrayList(Collection <? extends Е> с)
  • ArrayList(int capacity) 

Достоинства класса ArrayList

  • Быстрый доступ по индексу.
  • Быстрая вставка и удаление элементов с конца.

Недостатки класса ArrayList:

  • Медленная вставка и удаление элементов в середину.

2. Методы класса ArrayList для добавления элементов

  1. boolean add(E obj) - добавляет obj к вызывающей коллекции. Возвращает true, если obj был добавлен к коллекции. (Интерфейс Collection)
  2. void add(int index, Е obj) - вставляет obj в вызывающий список в позицию, указанную в index. Любые ранее вставленные элементы за указанной позицией вставки смещаются вверх. То есть никакие элементы не перезаписываются. (Интерфейс List)
  3. Е set (int index, Е obj) - присваивает obj элементу, находящемуся в списке в позиции index. (Интерфейс List)
  4. boolean addAll (Collection<? extends Е> с) - добавляет все элементы к вызывающей коллекции. Возвращает true, если операция удалась (то есть все элементы добавлены). В противном случае возвращает false. (Интерфейс Collection)

3. Методы класса ArrayList для удаления элементов

  1. boolean remove(Object obj) - удаляет один экземпляр obj из вызывающей коллекции. Возвращает true, если элемент удален. В противном случае возвращает false. (Интерфейс Collection)
  2. Е remove(int index) - удаляет элемент из вызывающего списка в позиции index и возвращает удаленный элемент. Результирующий список уплотняется, то есть элементы, следующие за удаленным, сдвигаются на одну позицию назад. (Интерфейс List)
  3. boolean removeAll(Collection<?> с) - удаляет все элементы из вызывающей коллекции. Возвращает truе, если в результате коллекция изменяется (то есть элементы удалены). В противном случае возвращает false. (Интерфейс Collection)
  4. boolean retainAll(Collection<?> с) - удаляет все элементы кроме входящих из вызывающей коллекции. Возвращает true, если в результате коллекция изменяется (то есть элементы удалены). В противном случае возвращает false. (Интерфейс Collection)
  5. void clear() - удаляет все элементы вызывающей коллекции. (Интерфейс Collection)

4. Пример добавления элементов в ArrayList

import java.util.ArrayList;
import java.util.List;

public class ArrayListAddDemo {
    public static void main(String[] args) {
        List<String> arrayList = new ArrayList<>();

        System.out.println("Начальный размер arrayList: "
                + arrayList.size());

        arrayList.add("C");
        arrayList.add("A");
        arrayList.add("E");
        arrayList.add("B");
        arrayList.add("D");
        arrayList.add("F");
        arrayList.add("F");
        arrayList.add(1, "A2");
        arrayList.set(0, "C2");

        System.out.println("Размер arrayList после добавления: "
                + arrayList.size());
        System.out.println("Содержимое arrayList: " + arrayList);
        System.out.println(arrayList.get(0));
    }
}

5. Пример удаления элементов из ArrayList

public class ArrayListRemoveDemo {
    public static void main(String[] args) {
        List<String> arrayList = new ArrayList<>();

        arrayList.add("C");
        arrayList.add("A");
        arrayList.add("E");
        arrayList.add("B");
        arrayList.add("D");
        arrayList.add("F");
        arrayList.add("F");
        arrayList.add(1, "A2");
        arrayList.set(0, "C2");

        System.out.println("Содержимое arrayList: " + arrayList);
        System.out.println("Размер arrayList после добавления: "
                + arrayList.size());

        arrayList.remove("F");
        arrayList.remove(2);

        System.out.println("Размер arrayList после удаления: "
                + arrayList.size());
        System.out.println("Содержимое of arrayList: " + arrayList);
    }
}

6. Пример использования метода removeAll() класса ArrayList

import java.util.ArrayList;
import java.util.List;

public class ArrayListRemoveAllDemo {
    public static void main(String[] args) {
        List<String> arrayList = new ArrayList<>();

        arrayList.add("C");
        arrayList.add("A");
        arrayList.add("E");
        arrayList.add("B");
        arrayList.add("D");
        arrayList.add("F");
        arrayList.add("F");
        arrayList.add(1, "A2");
        arrayList.set(0, "C2");

        List<String> removeElements = List.of("C2", "A2", "AA", "F");
        System.out.println("Содержимое arrayList до removeAll: "
                + arrayList);

        arrayList.removeAll(removeElements);
        System.out.println("Содержимое arrayList после removeAll: "
                + arrayList);
    }
}

7. Пример использования методов addAll(), clear() класса ArrayList

public class ArrayListDemo2 {
    public static void main(String[] args) {
        List<String> arrayList1 = new ArrayList<>();
        List<String> arrayList2 = List.of("1", "2");

        arrayList1.add("A");
        arrayList1.add("B");
        arrayList1.add("C");
        arrayList1.add("D");
        arrayList1.add("E");
        arrayList1.add("F");
        System.out.println("arrayList1 до добавления " + arrayList1);

        arrayList1.addAll(3, arrayList2);
        System.out.println("arrayList1 после добавления " + arrayList1);

        arrayList1.clear();
        System.out.println("arrayList1 после очистки " + arrayList1);
    }
}

8. Пример использования метода retainAll() класса ArrayList

import java.util.ArrayList;
import java.util.List;

public class ArrayListRetainAllDemo {
    public static void main(String[] args) {
        List<String> arrayList1 = new ArrayList<>();
        List<String> arrayList2 = List.of("F", "FF", "E");

        arrayList1.add("A");
        arrayList1.add("A");
        arrayList1.add("B");
        arrayList1.add("C");
        arrayList1.add("D");
        arrayList1.add("E");
        arrayList1.add("F");
        arrayList1.add("F");

        arrayList1.retainAll(arrayList2);
        System.out.println(arrayList1);
    }
}

9. Получение массива из ArrayList

Имеются два варианта метода toArray(), которые объявлены в Collection:

  • Object [] toArray()
  • <Т> Т [] toArray(Т массив[])
import java.util.Arrays;
import java.util.List;

public class ArrayListToStringDemo {
    public static void main(String[] args) {
        List<String> arrayList = List.of("C", "A", "E", "B", "D", "F");
        //1 вариант
        Object[] objectArray = arrayList.toArray();
        System.out.println(Arrays.toString(objectArray));

        //2 вариант
        String[] stringArray1 = new String[arrayList.size()];
        arrayList.toArray(stringArray1);
        System.out.println(Arrays.toString(stringArray1));

        //3 вариант
        String[] stringArray2 = arrayList.toArray(new String[0]);
        System.out.println(Arrays.toString(stringArray2));
    }
}
Read also:
Comments