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!