Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Alguem poderia me ajudar, tentando entender por dentro do forEach

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Olá Lucas, tudo bem com você?

Esse erro ocorre porque está sendo tentado o cast de um EntrySet para um Map.Entry, que é uma conversão incompatível.

Por baixo dos panos, o forEarch vai utilizar algo como:


for(Integer key: pessoas.keySet){
    System.out.println("Chave: " + key + "Valor: " + pessoas.get(key);
}

Ou seja, iterando pelo conjunto de chaves que o map pessoas têm, e para cada chave, pegamos seu valor associado utilizando o método get().

Essa é uma maneira que pode acontecer por debaixo dos panos o forEach com lambda. No entanto, é interessante lembrar que o Java nos dá tantas alternativas de alto nível, como lambdas, para que não nos preocupemos tanto com o que acontecer internamente, então pode ser que seja feito, internamente, de outra maneira. Ainda assim, é sempre muito interessante buscar ir além e conhecer o que acontece por baixo dos panos, níveis de abstração abaixo, ajuda muito a entender como a linguagem funciona de verdade!

Como sugestão, deixo a leitura da documentação da interface Map, fornecida pela Oracle, que mantém o Java. Lá tem muitos outros métodos da interface que podem ser muito úteis, e você pode inclusive encontrar outras maneiras como a JVM pode fazer por debaixo dos panos! A documentação está em inglês, mas caso seja necessário você pode utilizar a ferramenta de tradução do seu navegador para facilitar o entendimento.

FIco à disposição.

Um grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software