Usando ArrayList em Java
Embora a utilização de Arrays seja comum na área da programação para armazenar dados de um mesmo tipo, o que acontece quando o sistema possui uma quantidade mutável desses dados? A resposta para isso é o uso de uma ArrayList, um array redimensionável, mas que é derivada da interface List, que por sua vez é derivada da Collection. Dessa forma, a ArrayList pode utilizar de métodos de ambas.
Nesse artigo, exploramos o poder de uma ArrayList.
Sua sintaxe no Java segue os padrões estabelecidos pela linguagem, onde ArrayList é uma classe e objetos dela podem ser instanciados a partir da palavra new. Além disso, também, faz-se necessária a importação da classe antes de utilizá-la no programa.
import java.util.ArrayList;
ArrayList<Tipo> minhaArrayList = new ArrayList<Tipo>();
Note que, de acordo com a documentação Java, a prática de se implementar tipos parametrizados, ou seja, de especificar qual tipo de dado a ArrayList irá utilizar, é recomendado por três motivos:
- Permitir a implementação de algoritmos genéricos, que são mais fáceis de ler e customizar.
- Eliminação de casts.
- Ser mais fácil de detectar erros de compilação do que de execução.
Dando continuidade, portanto, podemos exemplificar o uso de uma ArrayList e seus vários métodos que são utilizados no dia a dia. Nos exemplos, estaremos utilizando uma ArrayList com o nome de clientes de uma loja que serão sorteados de maneira arbitrária e o primeiro entre eles ganhará um desconto.
Populando a ArrayList
Com o método add(), pode-se adicionar elementos em uma ArrayList. Combinando com a operação for, o método não precisa ser digitado várias vezes. Iniciamos o exemplo ao verificar se a ArrayList está vazia através do método isEmpty() e logo em seguida permitindo que o usuário digite o nome de 4 clientes. Então, imprimimos a ArrayList na tela e verificamos novamente se está vazia.
import java.util.ArrayList;
import java.util.Scanner;
public class ArtigoArrayList {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
ArrayList<String> clientes = new ArrayList<String>();
System.out.println(clientes.isEmpty());
for (int i = 0; i < 4; i++)
{
String cliente = input.nextLine();
clientes.add(cliente);
}
System.out.println(clientes);
System.out.println(clientes.isEmpty());
}
}
Considerando 4 nomes: Maria, João, José e Paulo, os comandos de impressão na tela resultarão em:
true
[Maria, João, José, Paulo]
false
Removendo Elementos
Mas, por algum motivo, José não é mais cliente da loja. Ele pode ser removido através do comando abaixo:
clientes.remove("José");
Ou então, caso haja conhecimento do índice onde está localizado o nome dele:
clientes.remove(2);
Se imprimirmos novamente a ArrayList na tela, veremos que o nome dele foi removido.
System.out.println(clientes);
A saída será
[Maria, João, Paulo]
Sorteando Elementos
O sorteio de elementos é implementado na interface Collections, então se faz necessário a importação dela para o código.
import java.util.Collections;
Dessa forma, o comando a seguir poderá ser utilizado, e podemos verificar o funcionamento ao imprimir novamente na tela a ArrayList:
Collections.shuffle(clientes);
System.out.println(clientes);
A saída será
[Paulo, Maria, João];
A fim de obter, portanto, o primeiro colocado desse sorteio, utilizamos o seguinte comando:
System.out.println(clientes.get(0));
Assim obteremos:
Paulo
Conclusão
Como visto, há utilidades reais para o uso de ArrayList, uma poderosa ferramenta, no dia a dia. Para mais informações nos vários métodos que podem ser utilizados, confira a documentação oficial sobre ArrayList e mais sobre o framework Collections.