2
respostas

Não imprimiu as idades

Fiz o teste conforme abaixo:

public class Exercicio {

public static void main(String[] args) {

    Map<Integer, String> pessoas = new HashMap<>();

    pessoas.put(21, "Leonardo Cordeiro");
    pessoas.put(27, "Fabio Pimentel");
    pessoas.put(19, "Silvio Mattos");
    pessoas.put(23, "Romulo Henrique");

    pessoas.keySet().forEach(idade -> {
        System.out.println(pessoas.get(idade));
    });

}

}

Porém imprimiu os nomes e não as idades.

2 respostas

É que como é um map, qdo vc faz pessoas.get(idade), ele vai buscar o valor que possui uma chave com a idade q vc passou.

Se vc quiser imprimir somente a idade teria que fazer:

pessoas.keySet().forEach(idade -> {
        System.out.println(idade);
});

Olá Alessandra,

Complementando o que Fausto escreveu:

Quando você cria uma estrutura do tipo Map, você define um conjunto de pares "chave" e "valor". No seu caso, a idade é a chave enquanto que o nome é o valor. Dessa forma, no código pessoas.keySet().forEach(idade -> { ... }, você está iterando sobre as chaves e imprimindo o valor associado àquela chave com o comando pessoas.get(idade).

Para o seu caso, poderíamos imprimir tanto a chave quanto o valor:

pessoas.keySet().forEach(idade -> {
    System.out.println("Idade: " + idade + ", Nome: " + pessoas.get(idade));
});

Outra forma de iterar sobre um Map seria assim:

for (Map.Entry<Integer, String> entry : pessoas.entrySet()) {
    System.out.println("Idade: " + entry.getKey() + ", Nome: " + entry.getValue());
}

Onde é impresso tanto a chave (idade) quanto o valor (nome).

Espero ter ajudado.