AnyCompiler

O Collections Framework

HashMap<K, V> armazena pares chave-valor. put(key, value) insere ou atualiza uma entrada, e get(key) a recupera — um HashMap não dá nenhuma garantia sobre a ordem de iteração, então código que depende de uma ordem específica precisa de uma estrutura diferente.

import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        HashMap<String, Integer> ages = new HashMap<>();
        ages.put("Alice", 30);
        ages.put("Bob", 25);
        System.out.println(ages.get("Alice"));
        System.out.println(ages.get("Bob"));
    }
}
Output
30
25

HashSet

HashSet armazena valores únicos sem duplicatas — adicionar um valor que já está presente é simplesmente um no-op, por isso numbers.size() abaixo é 3, não 4, mesmo que add() tenha sido chamado quatro vezes.

import java.util.HashSet;

public class Main {
    public static void main(String[] args) {
        HashSet<Integer> numbers = new HashSet<>();
        numbers.add(5);
        numbers.add(3);
        numbers.add(5);
        numbers.add(1);
        System.out.println(numbers.size());
        System.out.println(numbers.contains(3));
    }
}
Output
3
true

A seguir: lambdas e streams — a forma moderna e de estilo funcional do Java para escrever comportamento inline e transformar coleções.

Practice exercise

Crie um HashMap<String, Integer> chamado ages. Coloque "Alice" -> 30 e "Bob" -> 25 com put. Imprima ages.get("Alice").