1
resposta

Uso do forEach

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

            System.out.println(pessoas.keySet());
            System.out.println(pessoas.values());

Olhando no java doc, o values() e o keySet() possibilitam a visualização de cada parâmetro. Talvez não tenha entendido o exercício, mas qual o motivo de utilizar o forEach?

1 resposta

Muito bom, Bia! Nesse caso faz todo o sentido usar o método values() para printar os valores. Mais especificamente, o que acontece é que você retorna uma Collection com os valores das chaves para depois fazer o que quiser com eles! Só um adendo: a Collection retornada e o Map continuam interligados, portanto qualquer alteração em qualquer um dos dois será refletido no outro.

Agora, a motivação para usarmos o forEach() está na facilidade em podermos manipular cada elemento do Map (ou qualquer outra Collection) de forma concisa e prática, sem precisar gerar uma nova coleção como o métodovalues().

Inclusive, também é possível usar o values() e o forEach() em conjunto:

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

public class Teste {

    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.values().forEach(p -> System.out.println(p));
    }
}

Espero que isso te ajude! Se ficou algum ponto ainda não ficou claro, é só me avisar!

Abraços e bons estudos!!