Como usar ArrayList em Java: principais métodos

Até o momento, nessa seção de Estrutura de Dados de nosso curso de Java, vimos o quão útil são os arrays e as operações que podemos fazer com esses arrays, também conhecidos por vetores.
Porém, há um grande problema neles: são estáticos. Ou seja, tem tamanho definido, não podemos adicionar nem excluir nada neles, o que é bastante incômodo e faz com que arrays em Java sejam limitados.

E por que arrays não são muito úteis?
Porque na vida real as coisas não são assim estáticas, elas mudam. O número de funcionários de um empresa tendem a crescer, em uma faculdade alunos se formam e outros se matriculam, em um jogo de RPG vamos colecionando ítens no decorrer do jogo, ao passo que vamos usando outros.

Agora, nesse tutorial do curso Java Progressivo, vamos aprender como usar os ArrayList, que são arrays mais 'flexíveis', ou dinâmicos, já que podemos adicionar ou retirar elementos, além de fazer outras coisas que não são possíveis com os Arrays.

O que são ArrayList em Java

O Java, por padrão, possui uma série de recursos prontos (APIs) para que possamos tratar de estrutura de dados, também chamados de coleções (collections).
Podemos dizer que ArrayList é uma classe para coleções. Uma classe genérica (generic classes), para ser mais exato.

Coleções mesmo, de qualquer tipo de 'coisa', desde que seja um objeto.

Você pode criar seus objetos - através de uma classe - e agrupá-los através de ArrayList e realizar, nessa coleção, várias operações, como: adicionar e retirar elementos, ordená-los, procurar por um elemento específico, apagar um elemento específico, limpar o ArrayList dentre outras possibilidades.


Como declarar e usar ArrayList em Java

Importe:
import java.util.ArrayList;
Por ser um tipo diferente, sua sintaxe é um pouco diferente do que você já viu até então:

ArrayList< Objeto > nomeDoArrayList = new ArrayList< Objeto >();

No exemplo a seguir, vamos usar um ArrayList de String para trabalhar com o nome de várias Bandas de música:
ArrayList<String> bandas = new ArrayList<String> ();


Exemplo de uso do ArrayList

Após declarar a ArrayList 'bandas' que armazenará Strings, vamos adicionar alguns nomes.
Primeiro adicionamos a banda "Rush":
bandas.add("Rush");

Existe um método do ArrayList chamado 'toArray()' que coloca todos os elementos de um ArrayList em um Array.
Ou seja: bandas.toArray() é um Array!

Porém, já vimos que existe um método 'toString' da classe Arrays que retorna uma String com os elementos de um Array. Vamos usar esse método parar exibir todos os elementos do ArrayList, que transformamos em Array através do método 'toArray()':
Arrays.toString( bandas.toArray() );

Vamos adicionar a segunda banda, "Beatles" e imprimir, usando o mesmo método.
Note que quando usamos 'add', sempre adicionamos o elemento pro fim da ArrayList.
Confirme isso agora, vendo que a banda "Iron Maiden" ficará depois de "Beatles".

Vamos pegar o primeiro elemento, o elemento '0', através do método 'get':
bandas.get(0);

Note que é a banda "Rush", pois ela foi a primeira a ser adicionada.

Vamos adicionar o "Tiririca" na posição do "Rush", ou seja, na posição '0':
bandas.add(0,"Tiririca");
ou
bandas.add( bandas.indexOf("Rush"), "Tiririca");

Pois o método 'indexOf' retorna o índice em que ocorre "Rush".

Para saber o tamanho que tem seu ArrayList, basta usar o método 'size()':
bandas.size();

Feito isso, rapidamente remova o "Tiririca", pois alguém pode ver.
Para tal, use o método 'remove':
bandas.remove("Tiririca");

Ok. Não quer mais brincar de ArrayList? Remova tudo
bandas.clear();

import java.util.ArrayList;
import java.util.Arrays;

public class arrayLists{
    
    public static void main(String[] args){
            ArrayList<String> bandas = new ArrayList<String> ();
            
            bandas.add("Rush");
            System.out.print( "Adicionando a banda Rush: " );
            System.out.println( Arrays.toString( bandas.toArray() ) );
            
            bandas.add("Beatles");
            System.out.print( "Adicionando a banda Beatles: " );
            System.out.println( Arrays.toString( bandas.toArray() ) );
            
            bandas.add("Iron Maiden");
            System.out.print( "Adicionando a banda Iron Maiden: " );
            System.out.println( Arrays.toString( bandas.toArray() ) );
            
            System.out.print( "Quem está na índice 0: " );
            System.out.println( bandas.get(0) );
            
            System.out.print( "Adicionando Tiririca onde estava o Rush: " );
            bandas.add( bandas.indexOf("Rush"), "Tiririca");
            System.out.println( Arrays.toString( bandas.toArray() ) );
            
            System.out.print( "Número de elementos na lista: " );
            System.out.println( bandas.size() );
            
            System.out.print( "Removendo o Tiririca: " );
            bandas.remove("Tiririca");
            System.out.println( Arrays.toString( bandas.toArray() ) );
            
            System.out.print( "Removendo tudo: " );
            bandas.clear();
            System.out.println( Arrays.toString( bandas.toArray() ) );
        }

}

Saída:
Adicionando a banda Rush: [Rush]
Adicionando a banda Beatles: [Rush, Beatles]
Adicionando a banda Iron Maiden: [Rush, Beatles, Iron Maiden]
Quem está na índice 0: Rush
Adicionando Tiririca onde estava o Rush: [Tiririca, Rush, Beatles, Iron Maiden]
Número de elementos na lista: 4
Removendo o Tiririca: [Rush, Beatles, Iron Maiden]
Removendo tudo: []


Para saber mais métodos e mais opções de parâmetros/argumentos, consulte a documentação sobre ArrayList em Java, no site da Oracle:
http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html

Se em vez de de Strings, quiser trabalhar com números, use as classes Wrappers:
ArrayList<Integer>, ArrayList<Float>, ArrayList<Double>, ArrayList<Long> etc.

15 comentários:

Leticia disse...

Obrigada, ajudou muito no meu curso!

Anônimo disse...

Tópico perfeito!
Simples, objetivo e direto!
Consegui implementar a população de um combobox com um objeto list em meu TCC.
Obrigado pela ajuda! =)

Vitor Raul Miotto

Anônimo disse...

obrigado
muito bom,realmente me ajudou

Anônimo disse...

bem explicado,e muito obrigado por compartilha seus conhecimentos.

Mau mau disse...

Sacanagem misturar bandas como Rush, Maiden e Beatles, com Tiririca..

Margeo disse...

Existe alguma diferença entre usar os métodos "Arrays.toString( bandas.toArray())" e usar simplesmente o "System.out.println(bandas)"
O resultado aqui foi o mesmo, um arraylist já não é uma lista de arrays? por que usar um método pra transformar em uma coisa que ele já é? ou não é?
Obrigado!

Roberson Lima disse...

Verdade Margeo, não cabe ao exemplo.

Anônimo disse...

Muito bom, ajudou bastante ^^
Parabéns pelo trabalho!

Eury disse...

Obrigado pelo vosso site. Me tem ajudado muito, principalmente agora com os Arrays. Só quero agradeçer pelo vosso esforço. Que Deus vos abençoe sempre.

Priscila disse...

"Coleções mesmo, de qualquer tipo de 'coisa' ou dado, não somente de tipos primitivos."
Na verdade, não se pode inserir primitivos no ArrayList, somente objetos.

Abraao Braz disse...

Então acredito que é necessario usar o método toString(), quando se trata de um array de objeto.

Anônimo disse...

Aonde eu encontro como que faço conexão com o banco de dados ?

Abraao Braz disse...

http://www.devmedia.com.br/criando-uma-conexao-java-mysql-server/16753

Este é um exemplo de conexão com SGBD mysql ok, mas já da pra compreender o processo todo, não exatamente qual o SGBD que você usa, SQL SERVER, POSTGREE, ORACLE enfim visite o link para entender o processo. ok.

Rezende disse...

Como se alimenta o arraylist com dados inseridos pelo usuario?

Anônimo disse...

Rezende
ArrayListlista = new ArrayList();//criei um arraylist
String nomes;//uma string pra receber do usuario

Scanner s = new Scanner(System.in);
nomes = s.nextLine();//colocando o que o usuario digitou na string
lista.add(nomes); //PASSANDO PARA O ARRAYLIST

Dicas e Novidades de Java por e-mail

Sabe quanto custa um bom livro de java?
Entre R$ 100,00 e R$300,00

Sabe quanto custa um bom curso presencial de Java?
Entre R$ 1.500,00 até R$ 4.000,00

Sabe quanto custa estudar pelo Java Progressivo?
Absolutamente nada.

Porém, também precisamos de sua ajuda e apoio.
Para isso, basta curtir nossa Fan Page e clicar no botão G+ do Google.