ArrayList
Ao contrário das matrizes comuns, o   ArrayList do pacote java.util é um array de expansão automática. Ao criar um objeto do tipo ArrayList, você não precisa especificar a sua dimensão. Por exemplo, ArrayList lista = new ArrayList();
Vantagens ArrayList em comparação com um array regular:
  • acesso rápido a elementos por índice em tempo constante O(1);
  • acessar elementos por valor em tempo linear O(n);
  • permite que você armazene qualquer valor, incluindo null.

Fraquezas ArrayList:
Inserir/remover um elemento  causa a substituição de todos os elementos colocados "à direita" na lista uma posição à esquerda, ou seja, funciona em tempo linear O(n);

Lembre-se que as listas podem conter apenas objetos, portanto, se você deseja armazenar números, use Integer em vez de int. Integer é o nome de uma classe e um objeto dessa classe pode conter um valor inteiro. Você pode ler mais sobre classes e objetos aqui: introdução à programação orientada a objetos.

Existem duas opções para adicionar um elemento a um ArrayList:
add(value);  - adicionando um valor ao final do ArrayList
add(index, value); - adicionando um valor ao lugar certo pelo índice.

Por exemplo:
arr.adicionar(10);
arr.adicionar(5,10); 
 

Para obter o valor de um elemento de um ArrayList, use o método  get(index)
Por exemplo:
int a = arr. obter(0);

Para descobrir o número de elementos em um array, você pode usar o método size()
Por exemplo:
int contagem = arr. tamanho();

Para alterar o valor por índice na lista, use name.set(index,value); 
 
arr.set(0,10); 

Existem duas opções para adicionar um elemento a um ArrayList:
add(value);  - adicionando um valor ao final do ArrayList
add(index, value); - adicionando um valor ao lugar certo pelo índice.

Por exemplo:
arr.adicionar(10);
arr.adicionar(5,10); 
 

Você pode remover elementos em um ArrayList usando o método remove de duas maneiras:
  • por index remove(index)
  • por valor remove(valor)
Por exemplo:
 
arr.remover(0); //remove o primeiro elemento
arr.remover(< strong>novo Integer(10)); //exclui elemento com valor 10

ArrayList reverso
A interface Collections  também fornece métodos para operações em massa que funcionam em toda a coleção:
containsAll - retorna o valor booleano true se esta coleção contém todos os elementos da coleção chamada, caso contrário, retorna false.
addAll - adiciona todos os elementos especificados à coleção especificada. Os elementos a serem adicionados podem ser especificados individualmente ou como um array.
removeAll -  é usado para remover todos os elementos da lista que estão contidos na coleção especificada.
limpar - remove todos os elementos
reverse - array reverse
etc

Exemplo
Usando removeAll. ArrayList<Integer> primeiro = new ArrayList<Integer>(); primeiro.add(1); primeiro.add(2); primeiro.add(3); ArrayList<Integer> segundo = new ArrayList<Integer>(); segundo.add(1); segundo.add(2); // remove todos os elementos da segunda lista, // se existirem na primeira lista segundo.removeAll(primeiro);