ArrayList

В отличие от обычных массивов класс  ArrayList из пакета java.util является автоматически расширяемым массивом.
При создании объекта типа ArrayList необязательно указывать его размерность. Например:

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

Достоинства ArrayList по сравнению с обычным массивом:
  • Быстрый доступ к элементам по индексу за константное время O(1);
  • доступ к элементам по значению за линейное время O(n);
  • позволяет хранить любые значения в том числе и null.
Недостатки ArrayList:

Вставка/удаление элемента  вызывает перезапись всех элементов, размещенных «правее» в списке на одну позицию влево, то есть работает за линейное время O(n);

Помните, что списки могут содержать только объекты, поэтому, если вы хотите хранить числа, используйте Integer вместо int. Integer является именем класса, и объект этого класса может содержать целочисленное значение. Подробнее почитать по классы и объекты можно здесь: Введение в объектно-ориентированное программирование

Есть два варианта добавления элемента в ArrayList:
add(значение);  - добавление значения в конец ArrayList
add(индекс,значение); - добавление значение в нужное место по индексу.

Например:
arr.add(10);
arr.add(5,10);
 

Для получения значения элемента из ArrayList используется метод get(индекс)
Например:
int a = arr.get(0);

Чтобы узнать количество элементов в массиве можно использовать методе size()
Например:
int count = arr.size();

Для изменения значения по индексу в списке используйте name.set(index,value); 
 
arr.set(0,10);

Есть два варианта добавления элемента в ArrayList:
add(значение);  - добавление значения в конец ArrayList
add(индекс,значение); - добавление значение в нужное место по индексу.

Например:
arr.add(10);
arr.add(5,10);
 

Удалять элементы в ArrayList можно с помощью метода remove двумя способами:
  • по индексу remove(index)
  • по значению remove(value)
Например:
 
arr.remove(0);                 //удаляет первый элемент
arr.remove(new Integer(10));   //удаляет элемент со значением 10

В интерфейсе Collections также предоставляет методы для массовых операций, работы по всей коллекции:
containsAll - возвращает логическое значение 'true', если эта коллекция содержит все элементы в вызванной коллекции, иначе возвращает false.
addAll - добавляет все из указанных элементов в указанную коллекцию. Добавляемые элементы могут быть указаны по отдельности или в виде массива.
removeAll -  используется для удаления всех элементов из списка, которые содержатся в указанной коллекции.
clear - удаление всех элементов
reverse - реверс массива
и т.д.

Например использование removeAll:

        ArrayList<Integer> first = new ArrayList<Integer>();

        first.add(1);
        first.add(2);
        first.add(3);

        ArrayList<Integer> second = new ArrayList<Integer>();
        second.add(1);
        second.add(2);
        //удаляет все элементы из второго списка, если они существует в первом списке
        second.removeAll(first);