E aí, pessoal, tudo bem? Neste artigo irei abordar a classe ArrayList em Java, com o objetivo de te ajudar a melhorar a manipulação dos seus dados. O array padrão da linguagem exige que você determine o seu tamanho (que permanece imutável). Ou seja: para adicionar ou remover um elemento, é necessário criar outro array. Os métodos que o ArrayList implementa da interface List chegam para facilitar essa manipulação. Vamos entender com código.
Trabalhando com um array convencional
No seguinte trecho, eu crio um array do tipo int e populo com números de 1 a 10.
public class MyClass {
public static void main(String args[]) {
// Declarando array
int[] numeros = new int[10];
// Populando o array com 10 números em ordem crescente
for(int i = 0; i < 10; i++) {
numeros[i] = i+1;
}
// Printando o array
System.out.println("Array inicial");
for(int i = 0; i < 10; i++) {
System.out.print(numeros[i] + " ");
}
}
}
//output: 1 2 3 4 5 6 7 8 9 10
No entanto, depois de terminar meu programa, surge a necessidade de adicionar mais um elemento ao array. Como fazer isso se eu já determinei seu tamanho e preenchi com meus dados? Bom, vou fazer cópia do meu array e, nessa cópia, adicionar o elemento desejado:
// Coloquei esse trecho de código dentro do método main da classe acima
// Adicionando mais um elemento no array
int[] numerosAte11 = new int[numeros.length + 1]; // Declaro um array com um elemento a mais
// Copio o contéudo do array inicial para meu segundo array
for(int i = 0; i < 10; i++) {
numerosAte11[i] = numeros[i];
}
// Defino o último elemento como sendo 11
numerosAte11[10] = 11;
// Printando novo array
System.out.printf("\\nArray final\\n");
for(int i = 0; i < 11; i++) {
System.out.print(numerosAte11[i] + " ");
}
}
// output final do programa:
/*
Array inicial
1 2 3 4 5 6 7 8 9 10
Array final
1 2 3 4 5 6 7 8 9 10 11
*/
Claro que, na vida real, seus arrays terão dados que fazem sentido pra sua aplicação e não serão tão genéricos assim, pois podem ter sido preenchidos por um usuário, por exemplo. Mas foquem na ideia e no trabalho que deu. Esse tipo de prática, além de trabalhosa, ocasiona uma baita perda de desempenho.
Trabalhando com um ArrayList
O ArrayList é parte do Java Collection e está presente no pacote java.util. Essa estrutura proporciona arrays dinâmicos em Java, e vem a calhar quando necessitamos de muitas manipulações.
Algumas características dessa lista:
- O tamanho de uma ArrayList pode aumentar ou diminuir conforme necessário;
- Implementa a interface List, o que traz muitos métodos úteis;
- Permite acesso randômico a memória, já que é indexada;
- Não admite tipos primitivos; no lugar de int usamos Integer, por exemplo.
Agora, vamos resolver o problema acima com essa nova ferramenta:
import java.util.ArrayList;
public class MyClass {
public static void main(String args[]) {
// Declarando um ArrayList
// Perceba que não declarei o tamanho da lista
ArrayList<Integer> numeros = new ArrayList<>();
// Vou popular a lista como no outro exemplo para ficar mais claro
for(int i = 1; i < 11; i++) {
numeros.add(i);
}
// Printo os números da lista
System.out.println("Lista inicial "+ numeros);
// Agora preciso adicionar o número 11 ao final da lista, olhe como fica fácil
numeros.add(11);
System.out.println("Lista com 11 " + numeros);
// Vamos remover o número 6, passando o número do index para o método remove()
numeros.remove(5);
System.out.println("Lista sem o 6 " + numeros);
}
}
/* Output:
Lista inicial [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Lista com 11 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
Lista sem o 6 [1, 2, 3, 4, 5, 7, 8, 9, 10, 11]
*/
Perceberam como ficou mais fácil? O ArrayList abstrai para você a implementação de uma lista, para que seja possível trabalhar com Java sem se preocupar com o que ocorre “por baixo dos panos”.
Nosso curso de Java tem tudo sobre collections, para você aprender e se aprofundar no tema. Acesse nossa plataforma: https://www.cod3r.com.br/.