O tipo de dado ArrayList consiste em um array dinâmico que possui métodos para inserção, remoção, acesso e outros. Na parte inicial vamos aprender algumas operaçoes básicas e mais adiante os métodos da classe java.util.ArrayList.

Algumas características

  1. Dinâmico
  2. Não ordenado
  3. Implementa interface List
  4. Acesso randômico a elementos
  5. Permite elemento repetido
Interfaces implementadas

  1. Serializable
  2. Cloneable
  3. Iterable
  4. Collection
  5. List
  6. RandomAccess

Para a utilização do tipo de dado ArrayList, precisamos importar sua classe como na sintaxe abaixo:

Sintaxe
import java.util.ArrayList;

O tipo de dado ArrayList utiliza o conceito de Generics, e sua instanciação é feita de acordo com a sintaxe abaixo:

Sintaxe
ArrayList nome_variavel = new ArrayList();
ArrayList<E> nome_variavel = new ArrayList<E>();
ArrayList<E> nome_variavel = new ArrayList<E>(int size);
ArrayList<E> nome_variavel = new ArrayList<E>(Collection c);
Onde
size: quantidade de elementos
E: tipo de dado coleção.
c: Uma coleção usado como base para criar um ArrayList

Ao instanciar um ArrayList sem o uso de generics, essa instância irá aceitar qualquer tipo de dados como elemento, ou seja, heterogêneo.

Exemplo 1
//Main.java
import java.util.ArrayList;
public class Main
{
	public static void main(String[] args) {
	    
        ArrayList<Integer> v1 = new ArrayList<Integer>();
        ArrayList<String> v2 = new ArrayList<String>(3);
        ArrayList<Integer> v3 = new ArrayList<Integer>(v1);
	}
}
Saída
-

Novos elementos podem ser adicionados em um ArrayList fazendo uso dos métodos contidos na sintaxe abaixo. O primeiro adicionar um elemento no fim, o segundo em um posição específica.

Sintaxe
public boolean add(E e) //fim
public void add(int index, E element) //meio
Onde
e: elemento que desejamos adicionar
E: tipo de dado do elemento
Exemplo 2
//Main.java
import java.util.ArrayList;

public class Main
{
	public static void main(String[] args) {
	    
        ArrayList<Integer> v = new ArrayList<Integer>();
        v.add(1);
        v.add(2);
        v.add(0,777);

        ArrayList v4 = new ArrayList();
        v4.add(10);
        v4.add("String");
	}
}
Saída
-

Para ter acesso a um elemento de um ArrayList, utilizamos os métodos get e elementAt que retornam o elemento de um determinado índice.

Sintaxe
public E get(int index)
public E elementAt(int index);
Onde
E: tipo de dado do elemento.
index: índice do elemento
Exemplo 3
//Main.java
import java.util.ArrayList;

public class Main
{
	public static void main(String[] args) {
	    
        ArrayList<Integer> v = new ArrayList<Integer>();
        
        v.add(1);
        v.add(2);
        v.add(0,777);
        
        //elemento na posição zero
        Integer i = v.get(0);
        System.out.println(i);
        
        //elemento na posição zero
        i = v.elementAt(0);
        System.out.println(i);
	}
}
Saída
777
777

Para alterarmos o valor de um elemento em um ArrayList, utilizamos o método set que recebe como argumentos um índice e um valor.

Sintaxe
public E set(int index, E element);
Onde
E: tipo de dado referenciado.
index: índice de um elemento
Retorno
Retorno elemento antigo em index
Exemplo 4
//Main.java
import java.util.ArrayList;

public class Main
{
	public static void main(String[] args) {
	    
        ArrayList<Integer> v = new ArrayList<Integer>();
        
        v.add(1);
        v.add(2);
        v.add(0,777);
        
        //elemento na posição zero
        Integer i = v.set(0,888);
        System.out.println(i);
        
        //elemento na posição zero
        i = v.get(0);
        System.out.println(i);
	}
}
Saída
777
888

Para removermos elementos de um ArrayList utilizamos o método remove que recebem um índice ou objeto para remoção como argumento.

Sintaxe
public E remove(int index)
Onde
index: índice do elemento para remoção
Exemplo 4
//Main.java
import java.util.ArrayList;

public class Main
{
	public static void main(String[] args) {
	    
        ArrayList<Integer> v = new ArrayList<Integer>();
        
        v.add(1);
        v.add(2);
        v.add(3);

        System.out.println(v);
        v.remove(1);
        System.out.println(v);
	}
}
Saída
[1, 2, 3]
[1, 3]

Para termos conhecimento do número de elementos contido em um ArrayList, utilizamos o método size que retorna um inteiro contendo o número de elementos.

Sintaxe
public int size()
Exemplo 5
import java.util.ArrayList;

public class Main
{
	public static void main(String[] args) {
	    
        ArrayList<Integer> v = new ArrayList<Integer>();
        
        v.add(1);
        v.add(2);
        v.add(0,777);
        
        System.out.println(v.size());
	}
}
Saída
3

Para percorrer um ArrayList, utilizamos duas formas básicas: o comando for com auxílio dos métodos get ou elementAt, e o comando for como foreach. Esses comandos foram vistos em Java Básico: Comandos.

Exemplo 6
//Main.java
import java.util.ArrayList;

public class Main
{
	public static void main(String[] args) {
	    
        ArrayList<Integer> v = new ArrayList<Integer>();
        
        v.add(1);
        v.add(2);
        v.add(3);

        for (int i=0; i < v.size() ; i++)
            System.out.println(v.get(i));
	}
}
Saída
1
2
3
Exemplo 7
//Main.java
import java.util.ArrayList;

public class Main
{
	public static void main(String[] args) {
	    
        ArrayList<Integer> v = new ArrayList<Integer>();
        
        v.add(1);
        v.add(2);
        v.add(3);

        for (Integer i : v){
            System.out.println(i); 
        }
	}
}
Saída
1
2
3

Podemos utilizar o tipo de dado ArrayList como parâmetro de um método é feito assim como qualquer outro tipo de dados como visto em Métodos.

Sintaxe
modificador_acesso ArrayList<E> nome_metodo(ArrayList<E> nome_parametro){
  //corpo
}
Onde
E: tipo de dado referenciado.
Exemplo 4
//Teste.java
import java.util.ArrayList;

public class Teste{
    public void metodo(ArrayList v)
    {
        for (Integer i : v){
            System.out.println(i); 
        }
    }
}
//Main.java
import java.util.ArrayList;

public class Main
{
	public static void main(String[] args) 
    {
        ArrayList<Integer> v = new ArrayList<Integer>();
        
        v.add(1);
        v.add(2);
        v.add(3);

        Teste t = new Teste();
        t.metodo(v);
	}
}
Saída
1
2
3

A classe java.util.ArrayList fornece métodos para manipular seus dados. Abaixo uma lista de todos os métodos dessa classe.

Tab. 1: Métodos ArrayList
Método Descrição
add(int index, E element) Adiciona um elemento em um índice
add(E e) Adiciona um elemento no fim
addAll(int index, Collection<? extends E> c)
addAll(Collection<? extends E> c)
clear() Remove todos os elementos
clone()
contains(Object o) Verificar se um elemento está contido
ensureCapacity(int minCapacity)
equals(Object o)
forEach(Consumer<? super E> action)
get(int index) Retorna elemento de um índice
hashCode()
indexOf(Object o) Retorno o índice de um elemento
isEmpty() Verifica se ArrayList está vazia
iterator()
lastIndexOf(Object o) Retorna o índice da última ocorrência
listIterator()
listIterator(int index)
remove(int index) Remove um elemento em um índice
remove(Object o) Remove a primeira ocorrência
removeAll(Collection c)
removeIf(Predicate<? super E> filter)
removeRange(int fromIndex, int toIndex)
retainAll(Collection c)
set(int index, E element) Altera elemento em um índice
size() Retorna número de elementos
spliterator()
subList(int fromIndex, int toIndex)
toArray() Retornar elementos como array
toArray(T[] a)
trimToSize()

Com o método add podemos adicionar um novo elemento, que é passado como argumento para o método, em um ArrayList.

Sintaxe
public void add(int index, E element)
Onde
index: índice para inserção
E : Tipo de dado do ArrayList
element: elementos ou valor para adição
Retorno
-
Exception
IndexOutOfBoundsException
Exemplo
//Main.java
import java.util.ArrayList;

public class Main
{
	public static void main(String[] args) {
	    
        ArrayList<Integer> v = new ArrayList<Integer>(3);
        
        v.add(0,1);
        v.add(1,2);
        v.add(2,3);

        System.out.println(v);
	}
}
Saída
[1,2,3]

Com essa sobrecarga do método add, podemos adicionar um elemento, que é passaodo como argumento para o método, no fim de um ArrayList.

Sintaxe
public boolean add(E e)
Onde
e: elemento para adicionar
Retorno
true
Exemplo
//Main.java
import java.util.ArrayList;

public class Main
{
	public static void main(String[] args) {
	    
        ArrayList<Integer> v = new ArrayList<Integer>();
        
        v.add(1);
        v.add(2);
        v.add(3);

        System.out.println(v);
	}
}
Saída
[1, 2, 3]

Utilizando o método clear, podemos excluir todos os elementos de um ArrayList. Esse método não aceita argumentos e não possui retorno.

Sintaxe
public void clear()
Onde
-
Exemplo
//Main.java
import java.util.ArrayList;

public class Main
{
	public static void main(String[] args) {
	    
        ArrayList<Integer> v = new ArrayList<Integer>();
        
        v.add(1);
        v.add(2);
        v.add(3);

        System.out.println(v);
        v.clear();
        System.out.println(v);
	}
}
Saída
[1, 2, 3]
[]

O método contains é utilizado para verificar se um determinado elemento está contido em um ArrayList.

Sintaxe
public boolean contains(Object o)
Onde
o: elemento para verificar
Retorno
true se elemento o está contido, false caso contrário
Exemplo
//Main.java
import java.util.ArrayList;

public class Main
{
	public static void main(String[] args) {
	    
        ArrayList<Integer> v = new ArrayList<Integer>();
        
        v.add(1);
        v.add(2);
        v.add(3);

        System.out.println(v.contains(2));
	}
}
Saída
true

Com o método get podemos recuperar o elementos de um ArrayList contido em um determinado índice ou posição que é passado como argumento.

Sintaxe
public E get(int index)
Onde
E: tipo de dado
index: índice do elemento
Retorno
Iterador apontando para o elemento seguinte ao elemento removido.
Exception
IndexOutOfBoundsException
Exemplo
//Main.java
import java.util.ArrayList;

public class Main
{
	public static void main(String[] args) {
	    
        ArrayList<Integer> v = new ArrayList<Integer>();
        
        v.add(777);
        v.add(888);
        v.add(999);

        System.out.println(v.get(2));
	}
}
Saída
 
999

Utilizando o método indexOf podemos descobrir o índice da primeira ocorrência de um elemento que é passado como argumento para o método.

Sintaxe
public int indexOf(Object o)
Onde
o: elemento para recuperar seu índice
Retorno
Inteiro contendo o índice de Objetct o.
Exemplo
//Main.java
import java.util.ArrayList;

public class Main
{
	public static void main(String[] args) {
	    
        ArrayList<Integer> v = new ArrayList<Integer>();
        
        v.add(2);
        v.add(4);
        v.add(6);

        System.out.println(v.indexOf(4));
	}
}
Saída
1

O métodos isEmpty é utilizados verificar se uma ArrayList contém elementos. Esse método não recebe argumentos e retorna um booleano.

Sintaxe
public boolean isEmpty()
Retorno
true se vazio, false caso contrário
Exemplo
//Main.java
import java.util.ArrayList;

public class Main
{
	public static void main(String[] args) {
	    
        ArrayList<Integer> v = new ArrayList<Integer>();
        
        v.add(2);
        v.add(4);
        v.add(6);

        System.out.println(v.isEmpty());
	}
}
Saída
false

O método lastIndexOf é utilizado recuperar o índice da última ocorrência de um elemento que é passado como argumento para o método.

Sintaxe
public int lastIndexOf(Object o)
Onde
o: elemento para recuperar índice
Retorno
inteiro contendo índice de Object o
Exemplo
//Main.java
import java.util.ArrayList;

public class Main
{
	public static void main(String[] args) {
	    
        ArrayList<Integer> v = new ArrayList<Integer>();
        
        v.add(2);
        v.add(4);
        v.add(4);
        v.add(6);
        v.add(4);

        System.out.println(v);
        System.out.println(v.lastIndexOf(4));
	}
}
Saída
[2, 4, 4, 6, 4]
4

Com o método remove podemos remover um elemento, que é passado como argumento, de uma determinada posição de um ArrayList.

Sintaxe
public E remove(int index)
Onde
 index: índice do elemento para remoção
Retorno
o elemento E removido de index
Exemplo
//Main.java
import java.util.ArrayList;

public class Main
{
	public static void main(String[] args) {
	    
        ArrayList<Integer> v = new ArrayList<Integer>();
        
        v.add(2);
        v.add(4);
        v.add(6);

        System.out.println(v.remove(2));
	}
}
Saída
6

Com essa sobrecarga do método remove podemos remover a primeira ocorrência de um elemento contido em um ArrayList.

Sintaxe
public boolean remove(Object o)
Onde
o: elemento para remover
Retorno
true se Object o está contido, false caso contrário
Exemplo
//Main.java
import java.util.ArrayList;

public class Main
{
	public static void main(String[] args) {
	    
        ArrayList<Integer> v = new ArrayList<Integer>();
        
        v.add(2);
        v.add(4);
        v.add(6);

        System.out.println(v.remove((Object)2));
	}
}
Saída
true

Utilizando o método set podemos substituir o valor de um elemento baseado em um índice que é passado como argumento para o método.

Sintaxe
public E set(int index, E element)
Onde
index: índice do elemento
element: valor ou elemento para substituição
Retorno
Elemento E anterior
Exception
IndexOutOfBoundsException
Exemplo
//Main.java
import java.util.ArrayList;

public class Main
{
	public static void main(String[] args) {
	    
        ArrayList<Integer> v = new ArrayList<Integer>();
        
        v.add(2);
        v.add(4);
        v.add(6);

        System.out.println(v);
        System.out.println(v.set(0,999));
        System.out.println(v);
	}
}
Saída
[2, 4, 6]
2
[999, 4, 6]

Com o método size podemos descobrir o número de elementos contidos em um ArrayList. Esse método não recebe argumentos e retorna um inteiro.

Sintaxe
public int size()
Retorno
Inteiro contendo o número de elementos de um ArrayList
Exemplo
//Main.java
import java.util.ArrayList;

public class Main
{
	public static void main(String[] args) {
	    
        ArrayList<Integer> v = new ArrayList<Integer>();
        
        v.add(2);
        v.add(4);
        v.add(6);

        System.out.println(v);
        System.out.println(v.size());
	}
}
Saída
[2, 4, 6]
3

Utilizando o método array podemos converter o conteúdo de uma ArrayList para um vetor/array de Object. Esse método não recebe argumentos.

Sintaxe
public Object[] toArray()
Retorno
Vetor de Object contendo elementos
Exemplo
//Main.java
//Main.java
import java.util.ArrayList;

public class Main
{
	public static void main(String[] args) {
	    
        ArrayList<Integer> v = new ArrayList<Integer>();
        
        v.add(2);
        v.add(4);
        v.add(6);

        Object[] array = v.toArray();
        
        for( Object o : array){
            System.out.println(o);
        }
	}
}
Saída
2
4
6
  1. 24/07/2025 - revisão 4 - Correções pontuais; ajuste em sintaxes e Tab.1 links movidos para métodos
  2. 04/10/2024 - revisão 3 - Correção: 'containsValue', link 'ArrayList como parâmetro...' outras correções pontuais
  3. 02/09/2024 - revisão 2 - Correção em links de métodos add
  4. 08/02/2024 - revisão 1 - correção em navegação e erros gramaticais
  5. 04/09/2023 - versão inicial