collections-java-api-2023 icon indicating copy to clipboard operation
collections-java-api-2023 copied to clipboard

Collections Map

Open HayaneWakayama opened this issue 2 years ago • 2 comments

Oi Cami, preciso de uma ajuda. Não consegui entender muito bem o Map, tanto que não consegui resolver o exercício da Livraria Online. Tem indicação de algum material que eu possa ver ?? Quando começou com Map, entry, e outras coisas me perdi rsrs.

HayaneWakayama avatar Sep 09 '23 20:09 HayaneWakayama

Oi, @HayaneWakayama. Tudo certinho?

O Map é uma estrutura de dados que armazena pares de valores, onde cada valor é associado a uma chave única. É semelhante a um dicionário, onde você pode procurar um valor (chave) e obter o valor associado a essa chave.

O Map.Entry é uma ferramenta útil para acessar e manipular as chaves e valores de um Map durante a iteração.

Aqui está um exemplo de como criar e usar um Map em Java:

// Criar um HashMap onde a chave é uma String (nome) e o valor é um Integer (idade)
Map<String, Integer> mapaIdades = new HashMap<>();

// Adicionar pares chave-valor ao mapa
mapaIdades.put("Alice", 15);
mapaIdades.put("Camila", 29);
mapaIdades.put("Bruna", 15);

Agora, vamos supor que você queira encontrar todas as chaves (nomes) que têm o valor 15. Como fazer isso?

  1. Primeiro, você precisa de um laço de repetição para percorrer todo o Map e verificar quais são as chaves que contêm o valor 15.
  2. Para isso, você utiliza o método keySet(). Por que usar o keySet()? Esse método permite criar um vínculo entre a chave e o valor enquanto você percorre o laço.
  3. O método keySet() retorna um Set de chaves. No entanto, um Set não tem a estrutura chave-valor como um Map. É aqui que entra o Map.Entry. Ele permite "vincular" a chave ao valor, mesmo não sendo uma estrutura de Map. Assim, você consegue acessar tanto a chave quanto o valor associado.

Aqui está o código que faz isso:

// Iterar pelo mapa usando Map.Entry
for (Map.Entry<String, Integer> entry : mapaIdades.entrySet()) {
    if (entry.getValue() == 15) {
        System.out.println("entry.getKey() + " - " + entry.getValue() + " anos.");
    }
}

Neste exemplo, iteramos pelas entradas do Map usando Map.Entry. Para cada entrada, verificamos se o valor é igual a 15 e, se for, imprimimos tanto a chave quanto o valor associado.

Enfim, te dei essa pequena demonstração, mas têm umas aulas aqui do canal DevDojo que explica mais um pouco sobre Map.

  • https://youtu.be/kkHyYrfB35s?si=cIKE1l30zF9IjkDT
  • https://youtu.be/4jLo3TpiS4k?si=LeuO7_kDWyA_Sf9e
  • https://youtu.be/IvjlvMrwZiI?si=l7vW8Tc0oLisJFTY
  • https://youtu.be/2EKe7UJLuCQ?si=AzmXqLMGQVrdXzjk

Caso você queira, depois de assistir essas aulas para consolidar os conhecimentos, posso sugerir exercícios para você treinar.

cami-la avatar Sep 11 '23 13:09 cami-la

Obrigada!! Vou assistir as aulas!! Eu ficaria muito grata se puder passar os exercícios 😄

HayaneWakayama avatar Sep 12 '23 04:09 HayaneWakayama