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