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
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:
Obrigada, ajudou muito no meu curso!
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
obrigado
muito bom,realmente me ajudou
bem explicado,e muito obrigado por compartilha seus conhecimentos.
Sacanagem misturar bandas como Rush, Maiden e Beatles, com Tiririca..
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!
Verdade Margeo, não cabe ao exemplo.
Muito bom, ajudou bastante ^^
Parabéns pelo trabalho!
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.
"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.
Então acredito que é necessario usar o método toString(), quando se trata de um array de objeto.
Aonde eu encontro como que faço conexão com o banco de dados ?
Como se alimenta o arraylist com dados inseridos pelo usuario?
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
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*/
Geito mais simples de adicionar por entrada:
Scanner entrada = new Scanner(System.in);
System.out.printf("Banda a ser adicionada: ");
bandas.add(entrada.nextLine());
Rush foi para qual index após adicionar Tiririca?
Tiririca foi adicionado no lugar de Rush.
boa tarde! tenho uma questao nao consigo resolver. preciso de ajuda como criar um for que gera de 1 a 15?
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
Eu removi Tiririca e adicionei Led Zeppelin. O resultado ficou mt bom. Grato pelo tutorial
Postar um comentário