Класс ArrayList
В отличие от обычных массивов класс  ArrayList из пакета java.util является автоматически расширяемым массивом. При создании объекта типа ArrayList необязательно указывать его размерность. Например,
ArrayList  list = new ArrayList();

Достоинства 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

Реверс ArrayList
В интерфейсе 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);