Maps: O Guarda-Volumes da Matrix
MAP TYPES
├── HashMap (Armário Digital)
├── LinkedHashMap (Armário com Histórico)
└── TreeMap (Armário Ordenado)
Fundamentos
Maps são como um guarda-volumes high-tech - cada item tem sua chave única, e você pode guardar qualquer coisa lá dentro.
// Criando um guarda-volumes digital
Map<String, String> lockers = new HashMap<>();
lockers.put("A123", "Katana Digital"); // Guarda item
lockers.get("A123"); // Recupera item
Tipos de Maps (Diferentes Sistemas)
HashMap (Armário Quantum)
// Rápido e aleatório, como teletransporte
HashMap<Integer, String> quantum = new HashMap<>();
quantum.put(42, "Dados Encriptados"); // Ordem? Irrelevante!
quantum.put(7, "Código Fonte"); // Acesso instantâneo
LinkedHashMap (Registro Cronológico)
// Mantém ordem de inserção, como log de sistema
LinkedHashMap<String, String> logs = new LinkedHashMap<>();
logs.put("09:00", "Login"); // Primeiro registro
logs.put("09:01", "Download"); // Segundo registro
TreeMap (Mainframe Ordenado)
// Sempre ordenado pela chave, como diretório indexado
TreeMap<String, String> mainframe = new TreeMap<>();
mainframe.put("sys.exe", "Sistema"); // Ordenação
mainframe.put("hack.exe", "Ferramentas"); // automática
Operações Básicas (Protocolos de Acesso)
Inserção (Upload)
Map<String, Object> database = new HashMap<>();
database.put("user.dat", new User()); // Novo registro
database.putIfAbsent("backup.dat", new Data()); // Só se não existir
Recuperação (Download)
// Diferentes formas de acessar
Object data = database.get("user.dat"); // Acesso direto
Object safe = database.getOrDefault("temp.dat", new Data()); // Com fallback
Remoção (Delete)
// Limpando registros
database.remove("temp.dat"); // Remove entrada
database.remove("user.dat", oldUser); // Remove se valor bater
Navegação (Scanning)
Map<String, String> matrix = new HashMap<>();
// Iterando chaves (Scanning IDs)
for (String key : matrix.keySet()) {
System.out.println("ID: " + key);
}
// Iterando valores (Data Mining)
for (String value : matrix.values()) {
System.out.println("Data: " + value);
}
// Iterando pares (Full Scan)
for (Map.Entry<String, String> entry : matrix.entrySet()) {
System.out.println(entry.getKey() + " -> " + entry.getValue());
}
Operações Avançadas (Hacks)
// Computação condicional
matrix.compute("stats", (k, v) -> v == null ? "new" : v + "_updated");
// Merge de dados
matrix.merge("downloads", 1, (old, new) -> old + new);
// Operações em massa
matrix.replaceAll((k, v) -> v.toUpperCase());
Dicas de Segurança
Escolha do Sistema
HashMap: Para acesso rápido e aleatório
LinkedHashMap: Quando ordem de inserção importa
TreeMap: Para manter chaves ordenadas
Performance
// Inicialize com tamanho se souber
Map<String, String> system = new HashMap<>(100);
// Use o tipo certo para cada operação
Map<String, Integer> sorted = new TreeMap<>(); // Para dados ordenados
Exercícios Práticos
Implemente um sistema de cache
Crie um gerenciador de sessões
Desenvolva um contador de frequência
Próximos Passos
Depois de dominar os Maps, você estará pronto para:
Criar sistemas de armazenamento chave-valor
Implementar caches eficientes
Gerenciar dados indexados
26 June 2025