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(); } }
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.
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.
Muito obrigado Antonio! Fico feliz em ajudar. Abraço!
Muito obrigada!O canal tem contribuído muito para minha carreira de automação em testes.
Obrigado Rosiene!
public class Usuario {
ArrayList loja = new ArrayList();
loja.add(“Akira; volume 1; volume 2; volume 3; volume 4; volume 5; volume 6”);
loja.add(“Akira; volume 1; volume 2; volume 3; volume 4; volume 5; volume 6”);
loja.add(“Akira; volume 1; volume 2; volume 3; volume 4; volume 5; volume 6”);}
Esta dando erro, gostaria de saber como eu coloco uma arraylist em class?