Sobes.tech
Junior

O que são HashMap e Set, e em que casos é melhor usá-los?

sobes.tech IA

Resposta da IA

HashMap é uma coleção que armazena pares chave-valor. As chaves são únicas, e os valores podem repetir-se. Utiliza hashing para acesso rápido (em média O(1)) aos elementos por chave.

Set é uma coleção que armazena elementos únicos. Não garante a ordem de armazenamento, a menos que seja utilizada uma implementação específica (por exemplo, LinkedHashSet). As operações de adição, remoção e verificação de existência de um elemento são geralmente realizadas em O(1). Existem várias implementações, por exemplo:

  • HashSet: Não garante a ordem dos elementos.
  • LinkedHashSet: Mantém a ordem de inserção.
  • TreeSet: Armazena os elementos em ordem ordenada.

Quando usar:

  • HashMap:
    • Quando se necessita de uma pesquisa, inserção ou remoção eficiente por chave.
    • Para armazenar dados associados (por exemplo, um dicionário).
    • Quando é necessário verificar rapidamente a existência de um valor por chave.
  • Set:
    • Quando é necessário armazenar apenas elementos únicos.
    • Para verificar eficientemente se um elemento está na coleção.
    • Para realizar operações de conjuntos (união, interseção).

Exemplo de uso de HashMap:

// Criar HashMap
HashMap<String, Integer> idades = new HashMap<>();

// Adicionar elementos
idades.put("Alice", 30);
idades.put("Bob", 25);
idades.put("Charlie", 35);

// Obter valor por chave
int idadeBob = idades.get("Bob"); // idadeBob = 25

// Verificar se a chave existe
boolean contemAlice = idades.containsKey("Alice"); // contemAlice = true

Exemplo de uso de HashSet:

// Criar HashSet
HashSet<String> nomes = new HashSet<>();

// Adicionar elementos
nomes.add("Alice");
nomes.add("Bob");
nomes.add("Charlie");
nomes.add("Alice"); // Não será adicionado, pois já existe

// Verificar se um elemento existe
boolean contemBob = nomes.contains("Bob"); // contemBob = true

// Iterar sobre os elementos
for (String nome : nomes) {
    System.out.println(nome);
}