Enviar um café pro programador

Pode me ajudar a transformar cafeína em código?

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.

21 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.

Anônimo 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 ?

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

Anônimo disse...

Na verdade esse método é mais simples:

ArrayListlista = new ArrayList();//criei um arraylist

Scanner s = new Scanner(System.in);
lista.add(s.nextLine()); /*ele recebe diretamente do usuario para o array, economizando processos e variaveis que só sera utilizada para isso(mas não tem tanta diferença, a maior diferença é que seu código fica mais simples de se entender e tambem fiva menor*/

Anônimo disse...

Geito mais simples de adicionar por entrada:

Scanner entrada = new Scanner(System.in);
System.out.printf("Banda a ser adicionada: ");
bandas.add(entrada.nextLine());

RoinujNosde disse...

Rush foi para qual index após adicionar Tiririca?

Vinicius Maciel disse...

Tiririca foi adicionado no lugar de Rush.

Blessing disse...

boa tarde! tenho uma questao nao consigo resolver. preciso de ajuda como criar um for que gera de 1 a 15?

Unknown disse...

preciso dos seguintes arraylist, métodos e propriedades em java:

#Mostrar lista de trabalhadores em cada categoria;
#mostrar a idade média dos trabalhadores em cada categoria;
#mostrar a folha de pagamento dos trabalhadores, isto é, nome, salário básico, contribuição para as peças que produziu, além de adicionais e totais para cobrar;
#Mostre aos trabalhadores que receberam o maior bônus recebido, a fim de diminuição de mais.
# Mostre o número de sexo de trabalhadores em cada categoria, diferenciado-os por sexo;
#mostrar o total de peças produzidas de cada tipo na fábrica;
#mostrar o lucro recebido por todas as peças de baixo custo fabricadas e peças de alto custo custo;
#Mostrar o total de dinheiro que foi pago em salario pela fabrica, o dinheiro total que foi pago obtido pela venda das peças e as diferenças entre estes dois valores, isto permite a empresa determinar a rentabilidade da fábrica.


aguiar27ag@gmail.com

Bruno disse...

Eu removi Tiririca e adicionei Led Zeppelin. O resultado ficou mt bom. Grato pelo tutorial

Contribuir com o Java Progressivo

Que tal apoiar e fazer crescer o ensino da programação no Brasil ?

Ajudar nosso país a crescer e se desenvolver cada vez mais, tecnologicamente?

Clica abaixo pra saber mais!

Apoiar o Projeto Progressivo


Tutoriais de Java