A Classe ArrayList e Collections em Java

A Classe ArrayList em Java

As Collections são estruturas de dados pré-definidas, fornecidas pela API do Java, que são empregadas para armazenar grupos de objetos relacionados na memória durante a execução do programa. Com estas classes é possível organizar, armazenar e ler dados sem a necessidade de saber exatamente como os dados são armazenados (encapsulamento).

Um array convencional não tem seu tamanho modificado automaticamente durante a execução do programa, por exemplo para armazenar novos elementos, o que pode ser um problema, principalmente se surge a necessidade de armazenar mais elementos após um array estar completo.

O framework Collections em Java fornece diversas interfaces e classes para manipulação de grupos de objetos, como por exemplo:

  • Interfaces
    • List
    • Set
    • Queue
    • Deque
    • SortedSet
  • Classes
    • ArrayList
    • LinkedList
    • Vector
    • HashSet
    • PriorityQueue
    • LinkedHashSet
    • TreeSet

Nesta lição vamos iniciar o estudo das Collections com a classe ArrayList.

Classe ArrayList

A classe de coleção (collections class) ArrayList<T>, pertencente ao pacote java.util, e que implementa a interface List, resolve o problema de modificação do tamanho de um array em tempo de execução, pois ela pode mudar seu tamanho de forma dinâmica – ou seja, permite criar um array dinâmico. A letra T indica um placeholder, que é substituído ao declarar um ArrayList pelo tipo de elementos que a estrutura irá armazenar.
Suponha que desejemos criar um ArrayList de strings, de nome produtos. Para tal, executamos a seguinte declaração:

ArrayList<String> produtos;

Note que somente tipos não-primitivos podem ser usados para declarar variáveis e criar objetos em classes genéricas – e o ArrayList é uma classe genérica. Ainda assim, em Java é possível usar tipos primitivos, desde que empacotados como se fossem objetos, em um processo denominado boxing. Desta forma, poderíamos criar um ArrayList de inteiros também, por exemplo:

ArrayList<Integer> numeros;

Ao ler um valor deste ArrayList o elemento (valor inteiro) é desempacotado (processo de unboxing).

Métodos principais de um ArrayList

A seguir listamos os principais métodos fornecidos por uma classe ArrayList:

  • Método add – Adiciona um elemento no final do ArrayList.
  • Método clear – Remove todos os elementos da estrutura.
  • Método contains – Verifica se o ArrayList contém um elemento especificado, e retorna true em caso positivo, ou false caso contrário.
  • Método get – Retorna o item em uma posição de índice especificada.
  • Método indexOf – Retorna a posição de índice da primeira ocorrência de um elemento especificado.
  • Método remove – Remove a primeira ocorrência de um valor especificado ou de um elemento em um índice.
  • Método size – Informa o número de elementos que estão armazenados na estrutura.
  • Método trimToSize – Ajusta a capacidade do ArrayList de acordo com o número de elementos armazenados no momento.

Exemplo

Vejamos um exemplo de uso de ArrayList.

import java.util.ArrayList;
public class ListaArrayList {

public static void main(String[] args) {
  // Criar um novo ArrayList de Strings com capacidade inicial de 10 elementos (padrão)
  ArrayList<String> frutas = new ArrayList<>();

  frutas.add("Maçã"); // Adicionar um item à lista
  frutas.add(0, "Uva"); // Inserir a fruta Uva na posição de índice 0
  System.out.println("Mostrar o conteúdo do ArrayList usando laço for convencional:");

  for (int i = 0; i < frutas.size(); i++)
    System.out.printf(" %s", frutas.get(i));

  // Mostrar as frutas com o método mostrar(). Passamos a lista e um frase-cabeçalho
  mostrar(frutas,"%nMostrando a lista de frutas com o método mostrar:");

  frutas.add("Tangerina"); // Adicionar tangerina ao final da lista
  frutas.add("Morango"); // Idem com Morango
  mostrar(frutas, "Nova visualização da lista após adicionar frutas:");

  frutas.remove("Uva"); // remover a fruta Uva"
  mostrar(frutas, "Nova visualização da lista após remover frutas:");

  frutas.remove(1); // Remover item na posição de índice 1
  mostrar(frutas, "Remover o segundo elemento da lista (índice 1):");

  // Verificar número de elementos na lista
  System.out.printf("Tamanho atual do ArrayList: %s itens%n", frutas.size());

  // Verificar se um item existe na lista
  System.out.printf("A fruta \"Tangerina\" %sestá na lista%n", frutas.contains("Tangerina") ? "": "não ");
}

// criar método para mostrar os elementos do ArrayList frutas
public static void mostrar(ArrayList<String> frutas, String cabecalho) {
  System.out.printf(cabecalho); // mostrar cabeçalho

  for (String item : frutas)
    System.out.printf(" %s", item);
    System.out.println();
  }
}

Exemplo de ArrayList em Java

Neste exemplo criamos um ArrayList de String chamado de frutas, e adicionamos dois nomes de frutas a ele usando o método add.

Logo após, mostramos o conteúdo do ArrayList iterando pelos seus elementos com um laço for, e lendo cada item com o método get.

Também criamos um método especial para mostrar o conteúdo do ArrayList, de nome mostrar(), que recebe como argumentos o nome do ArrayList e uma mensagem a ser exibida juntamente com os elementos retornados.

Removemos um elemento usando o método remove, e verificamos o seu tamanho com o método size.

Finalmente, verificamos se um item está contido no ArrayList usando o método contains.

Na próxima lição vamos estudar as listas ligadas, implementadas com a classe LinkedList.

 

Sobre Fábio dos Reis (1329 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

2 Comentários em A Classe ArrayList e Collections em Java

  1. Antonio Jerry Laureano // 13/02/2020 em 16:01 // Responder

    Muito obrigado!
    Excelente artigo, admiro muito seu canal e acompanho sempre como posso.
    Agradeço muito e continue sempre que puder nos trazendo materiais e artigos excelentes como esses.
    Fábio dos Reis.

Escreva um comentário

Seu e-mail não será divulgado


*