Estruturas de Dados

As estruturas de dados são fundamentais na programação e na construção de algoritmos eficientes. O Java possui diversas estruturas de dados que podem ser utilizadas de acordo com a necessidade do problema a ser resolvido. Neste manual serão apresentadas as estruturas de dados List, Queue e Stack.

List

List é uma interface que implementa uma sequência ordenada de elementos. Uma lista pode conter elementos repetidos e pode ser acessada por índice. A implementação mais conhecida da interface List em Java é o ArrayList, que fornece uma lista baseada em array.

// Inicializando uma lista
List<String> listaDeNomes = new ArrayList<>();

// Adicionando elementos na lista
listaDeNomes.add("João");
listaDeNomes.add("Maria");

// Removendo um elemento da lista pelo índice
listaDeNomes.remove(0);

// Removendo um elemento da lista pelo valor
listaDeNomes.remove("Maria");

Set

Diferentemente da List, o Set implementa uma sequência NÃO ordenada de elementos devido ao fato de que o seu diferencial é não permitir a repetição de elementos. Todos os elementos contidos em um Set são únicos e, devido a falta de ordenação, não podem ser acessados via índice. A implementação mais comum do Set é o HashSet que verifica a unicidade de seus elementos através de hash codes.

// Inicializando um set
Set<String> listaDeNomes = new HashSet<>();

// Adicionando elementos na lista
listaDeNomes.add("João");
listaDeNomes.add("Maria");
listaDeNomes.add("João");

// Removendo um elemento do set
listaDeNomes.remove("João");

// Verificando a existência do elemento no set
listaDeNomes.contains("Maria");

Queue

Queue é uma interface que define uma estrutura de dados que segue o padrão FIFO (first in, first out), ou seja, o primeiro elemento a ser inserido é o primeiro a ser removido. A implementação mais conhecida da interface Queue em Java é o LinkedList.

// Inicializando uma fila
Queue<String> filaDeNomes = new LinkedList<>();

// Adicionando elementos na fila
filaDeNomes.add("João");
filaDeNomes.add("Maria");

// Retorna o primeiro elemento da fila
String primeiroNome = filaDeNomes.peek();

// Removendo o primeiro elemento da fila
filaDeNomes.poll();

// Retorna e remove o segundo elemento da fila
String segundoNome = filaDeNomes.poll(); 

Stack

Stack é uma classe que implementa uma pilha, seguindo o padrão LIFO (last in, first out), ou seja, o último elemento a ser inserido é o primeiro a ser removido. Interessante observar que, diferente da List e da Queue, no Java, a Stack não é uma interface, mas uma classe concreta.

// Inicializando uma pilha
Stack<String> pilhaDeNomes = new Stack<>();

// Adicionando elementos na pilha
pilhaDeNomes.push("João");
pilhaDeNomes.push("Maria");

// Removendo o último elemento da pilha
pilhaDeNomes.pop();  // Maria

// Retorna e remove o primeiro elemento da fila
String segundoNome = filaDeNomes.pop();  // João

Map

A classe Map é uma interface que representa um mapa de chave-valor, onde cada elemento é armazenado em um par de chave e valor. É possível adicionar, remover e atualizar elementos no mapa usando seus métodos. Alguns dos métodos mais comuns da interface Map são:

  • put(key, value): adiciona um elemento ao mapa com a chave especificada.

  • get(key): retorna o valor associado a uma determinada chave.

  • remove(key): remove um elemento do mapa com a chave especificada.

  • containsKey(key): verifica se uma chave está presente no mapa.

  • keySet(): retorna um conjunto de todas as chaves presentes no mapa.

  • values(): retorna uma coleção com todos os valores presentes no mapa.

Um exemplo de uso da classe Map é criar um mapa que associe o nome de uma pessoa com a sua idade:

import java.util.HashMap;
import java.util.Map;

public class ExemploMap {
    public static void main(String[] args) {
        Map<String, Integer> idades = new HashMap<>();
        idades.put("João", 30);
        idades.put("Maria", 25);
        idades.put("Pedro", 40);
        
        System.out.println("Idade de João: " + idades.get("João"));
        System.out.println("Todas as chaves: " + idades.keySet());
        System.out.println("Todas as idades: " + idades.values());
        
        idades.remove("Pedro");
        System.out.println("Chaves após a remoção de Pedro: " + idades.keySet());
    }
}

A saída desse programa seria:

lessCopy codeIdade de João: 30
Todas as chaves: [João, Maria, Pedro]
Todas as idades: [30, 25, 40]
Chaves após a remoção de Pedro: [João, Maria]

Referências

Last updated