3 Map (para pares chave-valor)

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
}
}
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
    }
}
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
}
}
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
    }
}
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
}
}
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
    }
}
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")
);
estoque.forEach((fruta, quantidade) -> 
    System.out.println(fruta + " tem " + quantidade + " unidades")
);
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
estoque.replaceAll((fruta, quantidade) -> quantidade * 2); // Dobra 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
estoque.computeIfPresent("Banana", (key, val) -> val + 10); // Soma 10 unidades à Banana
estoque.computeIfPresent("Banana", (key, val) -> val + 10); // Soma 10 unidades à Banana

Enter fullscreen mode Exit fullscreen mode

Resumo das Diferenças

原文链接:3 Map (para pares chave-valor)

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
Judge each day not by the harvest you reap but by the seeds you plant.
不要问自己收获了多少果实,而是要问自己今天播种了多少种子
评论 抢沙发

请登录后发表评论

    暂无评论内容