Java foreach eficiencia

Tengo algo como esto:

Map<String, String> myMap = ...;

for(String key : myMap.keySet()) {
   System.out.println(key);
   System.out.println(myMap.get(key)); 
}

Asi esmyMap.keySet() llamado una vez en elforeach loop? Creo que sí, pero quiero tu opinión.

Me gustaría saber si usa foreach de esta manera myMap.keySet()) tiene un impacto en el rendimiento o es equivalente a esto:

Set<String> keySet = myMap.keySet();
for (String key : keySet) {
   ...
}

Respuestas a la pregunta(12)

Su respuesta a la pregunta