DEV Community

3 Map<K, V> (para pares chave-valor)

Image description

Implementações principais: HashMap, LinkedHashMap, TreeMap
Motivo: Ideal para manipular dados associativos com lambdas através de métodos como forEach, replaceAll, computeIfPresent, etc.

O Map é uma interface que representa uma coleção de pares chave-valor, onde cada chave é única.

  1. Implementações Principais

1.1. HashMap
Estrutura: Baseado em tabela hash
Ordem de inserção: Não garantida
Complexidade: O(1) para operações básicas (inserção, remoção, busca)
Uso recomendado: Quando a ordem não importa e a performance é prioritária

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

public class HashMapExample {
    public static void main(String[] args) {
        Map<String, Integer> estoque = new HashMap<>();
        estoque.put("Maçã", 50);
        estoque.put("Banana", 30);
        estoque.put("Laranja", 20);

        System.out.println(estoque); // Impressão sem ordem específica
    }
}

Enter fullscreen mode Exit fullscreen mode

1.2. LinkedHashMap
Estrutura: Baseado em tabela hash + lista duplamente ligada
Ordem de inserção: Mantida
Complexidade: O(1) para operações básicas
Uso recomendado: Quando é necessário manter a ordem de inserção

import java.util.LinkedHashMap;
import java.util.Map;

public class LinkedHashMapExample {
    public static void main(String[] args) {
        Map<String, Integer> estoque = new LinkedHashMap<>();
        estoque.put("Maçã", 50);
        estoque.put("Banana", 30);
        estoque.put("Laranja", 20);

        System.out.println(estoque); // Ordem de inserção mantida
    }
}

Enter fullscreen mode Exit fullscreen mode

1.3. TreeMap
Estrutura: Baseado em árvore vermelha-preta
Ordem de inserção: Ordenado pelas chaves (ordem natural ou Comparator)
Complexidade: O(log n) para operações básicas
Uso recomendado: Quando é necessário manter as chaves ordenadas

import java.util.Map;
import java.util.TreeMap;

public class TreeMapExample {
    public static void main(String[] args) {
        Map<String, Integer> estoque = new TreeMap<>();
        estoque.put("Maçã", 50);
        estoque.put("Banana", 30);
        estoque.put("Laranja", 20);

        System.out.println(estoque); // Impressão ordenada pelas chaves
    }
}

Enter fullscreen mode Exit fullscreen mode
  1. Métodos Úteis com Lambdas 2.1. forEach() (Iteração simplificada)
estoque.forEach((fruta, quantidade) -> 
    System.out.println(fruta + " tem " + quantidade + " unidades")
);

Enter fullscreen mode Exit fullscreen mode

2.2. replaceAll() (Modifica todos os valores)

estoque.replaceAll((fruta, quantidade) -> quantidade * 2); // Dobra os valores

Enter fullscreen mode Exit fullscreen mode

2.3. computeIfPresent() (Modifica valores apenas se a chave existir)

estoque.computeIfPresent("Banana", (key, val) -> val + 10); // Soma 10 unidades à Banana

Enter fullscreen mode Exit fullscreen mode

Resumo das Diferenças

Image description

Top comments (0)