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.
- 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
}
}
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
}
}
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
}
}
- Métodos Úteis com Lambdas 2.1. forEach() (Iteração simplificada)
estoque.forEach((fruta, quantidade) ->
System.out.println(fruta + " tem " + quantidade + " unidades")
);
2.2. replaceAll() (Modifica todos os valores)
estoque.replaceAll((fruta, quantidade) -> quantidade * 2); // Dobra os valores
2.3. computeIfPresent() (Modifica valores apenas se a chave existir)
estoque.computeIfPresent("Banana", (key, val) -> val + 10); // Soma 10 unidades à Banana
Resumo das Diferenças
Top comments (0)