Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida - HashMap keySet e values

Só para entender:

  1. No HashMap , o put já coloca a chave, para acessar depois com keySet()
  2. Posso acessar keySet e values como lista ou array
  3. O objetivo do for no exercício e para manipular cada elemento separadamente
package br.com.alura;

import java.util.HashMap;
import java.util.Map;

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");

        //keySet() para acessar a chave, 21, 27 etc.

        System.out.println(pessoas.keySet());// imprimir chaves (que no caso e idade)
        System.out.println(pessoas.values());// imprimir valores

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


    }
}
2 respostas
solução!

Olá, James.

  1. Sim, quando você usa o put, você já fornece a chave e o valor para serem guardados. O keySet() vai te retornar todas as chaves contidas nesse map.
  2. O keySet e values não funcionam como Lista ou Array. Como são coleções não ordenadas, você não consegue acessá-los como chave.get(0) ou chave[0].
  3. Ainda não cheguei na aula, mas se for sobre o forEach do código, sim, ele está sendo usado para percorrer toda a sua coleção de chaves, uma por uma, e, por meio do método get(), te dá o valor associado à chave.

" 2. O keySet e values não funcionam como Lista ou Array. Como são coleções não ordenadas, você não consegue acessá-los como chave.get(0) ou chave[0]."

Agora entendi - é Collection, sem ordem. Confundi keySet com indice ordenado.